1. Load all libraries required

library(readxl)
library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
── Attaching packages ─────────────────────────────────────────────────────── tidyverse 1.3.2 ──
✔ ggplot2 3.4.0     ✔ purrr   0.3.4
✔ tibble  3.1.7     ✔ dplyr   1.0.9
✔ tidyr   1.2.0     ✔ stringr 1.4.0
✔ readr   2.1.3     ✔ forcats 0.5.2
── Conflicts ────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
library('dplyr')
library('readxl')
library(ggplot2)
library(dplyr) # required by custom function outlier_removal()
library(jmv) # ancova()
library(ggplot2) # ggplot()
library(gridExtra) # grid.arrange()

Attaching package: ‘gridExtra’

The following object is masked from ‘package:dplyr’:

    combine
olink_delcode<- read_excel('DELCODE_olinkonly.xlsx')
olink_delcode <- data.frame(olink_delcode)

2. Pre analysis: Data import and cleaning

colnames(olink_delcode)
 [1] "Repseudonym"    "Barcode_CSF"    "sex"            "Age"            "prmdiag"       
 [6] "bmi"            "ApoE"           "E4_Positive"    "AB_Ratio_Patho" "tTau_Patho"    
[11] "AT"             "AN"             "YKL40_NPX"      "AXL_NPX"        "TYRO3_NPX"     
[16] "TREM2_NPX"      "MIF_NPX"        "TNFR1_NPX"      "TNFR2_NPX"      "C1q_NPX"       
[21] "C3_NPX"         "Factor_B_NPX"   "Factor_H_NPX"   "ICAM1_NPX"      "VCAM1_NPX"     
DC_thesis_olink <- subset(olink_delcode, select = c(Barcode_CSF,
                                                     YKL40_NPX, AXL_NPX, TYRO3_NPX,
                                                     TREM2_NPX, C1q_NPX, C3_NPX,
                                                     Factor_B_NPX, Factor_H_NPX, MIF_NPX,
                                                     TNFR1_NPX, TNFR2_NPX, ICAM1_NPX, VCAM1_NPX,
                                                     Age, sex, bmi, E4_Positive, 
                                                     prmdiag, AB_Ratio_Patho, tTau_Patho, AT, AN))

DC_thesis_olink$A_N_cat <- factor(ifelse(DC_thesis_olink$AN == 0,
                                          "A-T-",
                                          ifelse(DC_thesis_olink$AN == 2,
                                                 "A+T-",
                                                 ifelse(DC_thesis_olink$AN == 1,
                                                        "A-T+",
                                                        "A+T+"))),
                                   levels = c("A-T-", "A-T+", "A+T-", "A+T+"))
table(DC_thesis_olink$A_N_cat)

A-T- A-T+ A+T- A+T+ 
 245   24   92  120 
DC_thesis_olink$Diag <- factor(ifelse(DC_thesis_olink$prmdiag == 0 | DC_thesis_olink$prmdiag == 100,
                                       "CN",
                                       ifelse(DC_thesis_olink$prmdiag == 1,
                                              "SCD",
                                              ifelse(DC_thesis_olink$prmdiag == 2,
                                                     "MCI", "DAT"))),
                                levels = c('CN',"SCD", "MCI", "DAT"))
table(DC_thesis_olink$Diag)

 CN SCD MCI DAT 
126 194 104  60 
DC_thesis_olink$clinical_N_cat <- factor(ifelse(DC_thesis_olink$Diag == "CN" & 
                                                  DC_thesis_olink$tTau_Patho == 0,
                                                 "CN_T-",
                                                 ifelse(DC_thesis_olink$Diag == "CN" & 
                                                          DC_thesis_olink$tTau_Patho == 1,
                                                        "CN_T+",
                                                        ifelse(DC_thesis_olink$Diag == "SCD" & 
                                                                 DC_thesis_olink$tTau_Patho == 0,
                                                               "SCD_T-",
                                                               ifelse(DC_thesis_olink$Diag == "SCD" & 
                                                                        DC_thesis_olink$tTau_Patho == 1,
                                                                      "SCD_T+",
                                                                      ifelse(DC_thesis_olink$Diag == "MCI" & 
                                                                               DC_thesis_olink$tTau_Patho == 0,
                                                                             "MCI_T-",
                                                                             ifelse(DC_thesis_olink$Diag == "MCI" & 
                                                                                      DC_thesis_olink$tTau_Patho == 1,
                                                                                    "MCI_T+",
                                                                                    ifelse(DC_thesis_olink$Diag == "DAT" & 
                                                                                             DC_thesis_olink$tTau_Patho == 0,
                                                                                           "DAT_T-",
                                                                                           ifelse(DC_thesis_olink$Diag == "DAT" & 
                                                                                                    DC_thesis_olink$tTau_Patho == 1,
                                                                                                  "DAT_T+", 'others')))))))),
                                          levels = c('CN_T-',"CN_T+", 'SCD_T-', 'SCD_T+', "MCI_T-", "MCI_T+","DAT_T-", "DAT_T+"))
table(DC_thesis_olink$clinical_N_cat)

 CN_T-  CN_T+ SCD_T- SCD_T+ MCI_T- MCI_T+ DAT_T- DAT_T+ 
   104     22    160     34     56     46     17     42 

Outlier removal function Higher than or less than 3 standard deviations

outlier_removal <- function(df) {
  find.outlier <- function(df) {
    if(!is.numeric(df)) {
      df
    }
    else {
      arith.mean <- mean(df, na.rm = TRUE)
      st.dev <- sd(df, na.rm = TRUE)
      df[which(df > (arith.mean + 3*st.dev) | df < (arith.mean - 3*st.dev))] <- NA
      df
    }
  }
  df %>% dplyr::mutate_all(find.outlier)
}

Removed outliers

DC_thesis_olink_clean <- outlier_removal(DC_thesis_olink[1:14])

dim(DC_thesis_olink_clean)
[1] 484  14

Check for merge outlier removed columns

DC_thesis_o <- merge(DC_thesis_olink_clean,
                     DC_thesis_olink[c(1, 15:ncol(DC_thesis_olink))],
                     by = "Barcode_CSF")
dim(DC_thesis_o)
[1] 484  26
DC_thesis_o <- na.omit(DC_thesis_o)
table(DC_thesis_o$A_N_cat)

A-T- A-T+ A+T- A+T+ 
 216   21   83  106 
table(DC_thesis_o$Diag)

 CN SCD MCI DAT 
109 175  90  52 
table(DC_thesis_o$clinical_N_cat)

 CN_T-  CN_T+ SCD_T- SCD_T+ MCI_T- MCI_T+ DAT_T- DAT_T+ 
    90     19    145     30     47     43     17     35 

Making BMI as character

DC_thesis_o$bmi <- as.numeric(as.character(DC_thesis_o$bmi)) 
colnames(DC_thesis_o)
 [1] "Barcode_CSF"    "YKL40_NPX"      "AXL_NPX"        "TYRO3_NPX"      "TREM2_NPX"     
 [6] "C1q_NPX"        "C3_NPX"         "Factor_B_NPX"   "Factor_H_NPX"   "MIF_NPX"       
[11] "TNFR1_NPX"      "TNFR2_NPX"      "ICAM1_NPX"      "VCAM1_NPX"      "Age"           
[16] "sex"            "bmi"            "E4_Positive"    "prmdiag"        "AB_Ratio_Patho"
[21] "tTau_Patho"     "AT"             "AN"             "A_N_cat"        "Diag"          
[26] "clinical_N_cat"

3. AT scheme

3.1. YKL40_AT

(YKL40_A_T_plot <- ggplot(DC_thesis_o,
                          aes(x = A_N_cat, y = YKL40_NPX , 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "YKL40 (NPX)") +
    scale_y_continuous(breaks = seq(3,9, by = 1), limits = c(3,9)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = YKL40_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = YKL40_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - YKL40_NPX                                                                  
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            11.7657273      3      3.9219091    22.7350558    < .0000001   
   Age                 9.6214161      1      9.6214161    55.7747324    < .0000001   
   sex                 0.7964757      1      0.7964757     4.6171187     0.0322281   
   bmi                 0.1154201      1      0.1154201     0.6690828     0.4138376   
   E4_Positive         0.1376713      1      0.1376713     0.7980718     0.3721845   
   Residuals          72.1070588    418      0.1725049                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.43620545    0.09600570    418.0000    -4.5435371       0.0000435   
              -    A+T-           -0.04072629    0.06026469    418.0000    -0.6757902       1.0000000   
              -    A+T+           -0.38765966    0.05658273    418.0000    -6.8512011    < .0000001   
   A-T+       -    A+T-            0.39547916    0.10565811    418.0000     3.7430079       0.0012436   
              -    A+T+            0.04854579    0.10323609    418.0000     0.4702405       1.0000000   
   A+T-       -    A+T+           -0.34693337    0.06113807    418.0000    -5.6745885       0.0000002   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(YKL40_NPX, na.rm = TRUE), Std=sd(YKL40_NPX, na.rm = TRUE),
            Max=max(YKL40_NPX, na.rm = TRUE), Min=min(YKL40_NPX, na.rm = TRUE))
NA

3.2. Axl_AT

(AXL_A_T_plot <- ggplot(DC_thesis_o,
                        aes(x = A_N_cat, y = AXL_NPX, 
                            colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "AXL (NPX)") +
    scale_y_continuous(breaks = seq(0, 5, by = 1), limits = c(0,5)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = AXL_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = AXL_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - AXL_NPX                                                                     
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           8.923849093      3    2.974616364    19.41113827    < .0000001   
   Age               0.851292019      1    0.851292019     5.55518597     0.0188864   
   sex               1.270724020      1    1.270724020     8.29222886     0.0041862   
   bmi               0.269418000      1    0.269418000     1.75811245     0.1855842   
   E4_Positive       0.006962198      1    0.006962198     0.04543248     0.8313147   
   Residuals        64.055472830    418    0.153242758                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                        
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t            p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -0.4904526    0.09048701    418.0000    -5.420144       0.0000006   
              -    A+T-             0.1074292    0.05680050    418.0000     1.891342       0.3556187   
              -    A+T+            -0.2031011    0.05333019    418.0000    -3.808369       0.0009651   
   A-T+       -    A+T-             0.5978818    0.09958458    418.0000     6.003759    < .0000001   
              -    A+T+             0.2873515    0.09730178    418.0000     2.953199       0.0199348   
   A+T-       -    A+T+            -0.3105302    0.05762367    418.0000    -5.388935       0.0000007   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(AXL_NPX, na.rm = TRUE), Std=sd(AXL_NPX, na.rm = TRUE),
            Max=max(AXL_NPX, na.rm = TRUE), Min=min(AXL_NPX, na.rm = TRUE))

3.3. Tyro3_AT

(Tyro3_A_T_plot <- ggplot(DC_thesis_o,
                          aes(x = A_N_cat, y = TYRO3_NPX, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Tyro3 (NPX)") +
    scale_y_continuous(breaks = seq(2, 6, by = 1), limits = c(2,6)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))



ancova(formula = TYRO3_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TYRO3_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TYRO3_NPX                                                                   
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           4.888160573      3    1.629386858    18.50020664    < .0000001   
   Age               0.632224385      1    0.632224385     7.17833319     0.0076702   
   sex               0.154161880      1    0.154161880     1.75036801     0.1865537   
   bmi               0.413577360      1    0.413577360     4.69579497     0.0308007   
   E4_Positive       0.005425516      1    0.005425516     0.06160180     0.8041038   
   Residuals        36.814924274    418    0.088073982                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                        
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t            p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -0.3365132    0.06859936    418.0000    -4.905485       0.0000080   
              -    A+T-             0.1216140    0.04306119    418.0000     2.824214       0.0297988   
              -    A+T+            -0.1238764    0.04043030    418.0000    -3.063949       0.0139546   
   A-T+       -    A+T-             0.4581272    0.07549634    418.0000     6.068204    < .0000001   
              -    A+T+             0.2126368    0.07376573    418.0000     2.882596       0.0248858   
   A+T-       -    A+T+            -0.2454904    0.04368524    418.0000    -5.619527       0.0000002   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(TYRO3_NPX, na.rm = TRUE), Std=sd(TYRO3_NPX, na.rm = TRUE),
            Max=max(TYRO3_NPX, na.rm = TRUE), Min=min(TYRO3_NPX, na.rm = TRUE))

3.4. TREM2_AT

(TREM2_A_T_plot <- ggplot(DC_thesis_o,
                          aes(x = A_N_cat, y = TREM2_NPX, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TREM2 (NPX)") +
    scale_y_continuous(breaks = seq(0, 8, by = 1), limits = c(0,8)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TREM2_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TREM2_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TREM2_NPX                                                                  
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            21.5227024      3      7.1742341    14.4479563    < .0000001   
   Age                 6.2170928      1      6.2170928    12.5204005     0.0004477   
   sex                 1.1990359      1      1.1990359     2.4146993     0.1209578   
   bmi                 1.1558506      1      1.1558506     2.3277298     0.1278434   
   E4_Positive         0.2982253      1      0.2982253     0.6005863     0.4387926   
   Residuals         207.5608342    418      0.4965570                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.80205967    0.16288490    418.0000    -4.9240886       0.0000073   
              -    A+T-           -0.04748003    0.10224610    418.0000    -0.4643701       1.0000000   
              -    A+T+           -0.43690772    0.09599922    418.0000    -4.5511590       0.0000420   
   A-T+       -    A+T-            0.75457964    0.17926135    418.0000     4.2093827       0.0001882   
              -    A+T+            0.36515195    0.17515211    418.0000     2.0847704       0.2261792   
   A+T-       -    A+T+           -0.38942769    0.10372788    418.0000    -3.7543202       0.0011905   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(TREM2_NPX, na.rm = TRUE), Std=sd(TREM2_NPX, na.rm = TRUE),
            Max=max(TREM2_NPX, na.rm = TRUE), Min=min(TREM2_NPX, na.rm = TRUE))

3.5. C1q_AT

(C1q_A_T_plot <- ggplot(DC_thesis_o,
                        aes(x = A_N_cat, y = C1q_NPX, 
                            colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C1q (NPX)") +
    scale_y_continuous(breaks = seq(-4, 1, by = 1), limits = c(-4,1)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C1q_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = C1q_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C1q_NPX                                                                    
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            4.93452704      3     1.64484235    10.9742979     0.0000006   
   Age                4.45758032      1     4.45758032    29.7407313    < .0000001   
   sex                0.93314380      1     0.93314380     6.2258842     0.0129744   
   bmi                0.03047065      1     0.03047065     0.2032985     0.6523053   
   E4_Positive        0.05610176      1     0.05610176     0.3743079     0.5409980   
   Residuals         62.65039535    418     0.14988133                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.28632829    0.08948908    418.0000    -3.1995893       0.0088867   
              -    A+T-            0.06919775    0.05617408    418.0000     1.2318448       1.0000000   
              -    A+T+           -0.19554760    0.05274204    418.0000    -3.7076230       0.0014244   
   A-T+       -    A+T-            0.35552604    0.09848631    418.0000     3.6099030       0.0020608   
              -    A+T+            0.09078069    0.09622869    418.0000     0.9433849       1.0000000   
   A+T-       -    A+T+           -0.26474534    0.05698817    418.0000    -4.6456192       0.0000273   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(C1q_NPX, na.rm = TRUE), Std=sd(C1q_NPX, na.rm = TRUE),
            Max=max(C1q_NPX, na.rm = TRUE), Min=min(C1q_NPX, na.rm = TRUE))
NA

3.6. C3_AT

(C3_A_T_plot <- ggplot(DC_thesis_o,
                       aes(x = A_N_cat, y = C3_NPX, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C3 (NPX)") +
    scale_y_continuous(breaks = seq(-2.5, 5, by = 2.5), limits = c(-2.5,5)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C3_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = C3_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C3_NPX                                                                      
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F               p           
 ──────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           0.167368201      3    0.055789400     0.163446711    0.9209433   
   Age               2.045097430      1    2.045097430     5.991540474    0.0147851   
   sex               3.938390743      1    3.938390743    11.538339049    0.0007470   
   bmi               4.373970735      1    4.373970735    12.814461701    0.0003843   
   E4_Positive       0.001251925      1    0.001251925     0.003667777    0.9517368   
   Residuals       142.676283252    418    0.341330821                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                          
 ─────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           0.001386141    0.13504671    418.0000     0.01026416       1.0000000   
              -    A+T-          -0.025252431    0.08477152    418.0000    -0.29788816       1.0000000   
              -    A+T+          -0.054856098    0.07959227    418.0000    -0.68921387       1.0000000   
   A-T+       -    A+T-          -0.026638571    0.14862431    418.0000    -0.17923428       1.0000000   
              -    A+T+          -0.056242238    0.14521737    418.0000    -0.38729690       1.0000000   
   A+T-       -    A+T+          -0.029603667    0.08600005    418.0000    -0.34422848       1.0000000   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(C3_NPX, na.rm = TRUE), Std=sd(C3_NPX, na.rm = TRUE),
            Max=max(C3_NPX, na.rm = TRUE), Min=min(C3_NPX, na.rm = TRUE))
NA

3.7. FB_AT

(FB_A_T_plot <- ggplot(DC_thesis_o,
                       aes(x = A_N_cat, y = Factor_B_NPX, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor B (NPX)") +
    scale_y_continuous(breaks = seq(0, 5, by = 1), limits = c(0,5)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Factor_B_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = Factor_B_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_B_NPX                                                              
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            0.89061401      3     0.29687134     1.1923865    0.3122780   
   Age                0.15970641      1     0.15970641     0.6414623    0.4236368   
   sex                1.34262338      1     1.34262338     5.3926594    0.0207012   
   bmi                5.33243228      1     5.33243228    21.4177641    0.0000049   
   E4_Positive        0.05666330      1     0.05666330     0.2275887    0.6335669   
   Residuals        104.07046596    418     0.24897241                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.13038576    0.11533785    418.0000    -1.1304680       1.0000000   
              -    A+T-            0.02128949    0.07239987    418.0000     0.2940543       1.0000000   
              -    A+T+           -0.08567307    0.06797649    418.0000    -1.2603338       1.0000000   
   A-T+       -    A+T-            0.15167525    0.12693393    418.0000     1.1949150       1.0000000   
              -    A+T+            0.04471269    0.12402420    418.0000     0.3605158       1.0000000   
   A+T-       -    A+T+           -0.10696256    0.07344911    418.0000    -1.4562812       0.8763936   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(Factor_B_NPX, na.rm = TRUE), Std=sd(Factor_B_NPX, na.rm = TRUE),
            Max=max(Factor_B_NPX, na.rm = TRUE), Min=min(Factor_B_NPX, na.rm = TRUE))

3.8. FH_AT

(FH_A_T_plot <- ggplot(DC_thesis_o,
                       aes(x = A_N_cat, y = Factor_H_NPX, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor H (NPX)") +
    scale_y_continuous(breaks = seq(0, 5, by = 1), limits = c(0,5)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Factor_H_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = Factor_H_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_H_NPX                                                               
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           4.262885291      3    1.420961764     8.70858973    0.0000129   
   Age               1.807445844      1    1.807445844    11.07721876    0.0009513   
   sex               4.647819852      1    4.647819852    28.48490175    0.0000002   
   bmi               2.073885349      1    2.073885349    12.71013557    0.0004057   
   E4_Positive       0.004690762      1    0.004690762     0.02874808    0.8654440   
   Residuals        68.204156552    418    0.163167839                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.30570286    0.09337133    418.0000    -3.2740550       0.0068900   
              -    A+T-            0.04971858    0.05861105    418.0000     0.8482800       1.0000000   
              -    A+T+           -0.17698295    0.05503012    418.0000    -3.2161108       0.0084024   
   A-T+       -    A+T-            0.35542144    0.10275889    418.0000     3.4587904       0.0035900   
              -    A+T+            0.12871991    0.10040333    418.0000     1.2820284       1.0000000   
   A+T-       -    A+T+           -0.22670153    0.05946046    418.0000    -3.8126437       0.0009491   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(Factor_H_NPX, na.rm = TRUE), Std=sd(Factor_H_NPX, na.rm = TRUE),
            Max=max(Factor_H_NPX, na.rm = TRUE), Min=min(Factor_H_NPX, na.rm = TRUE))

3.9. MIF_AT

(MIF_A_T_plot <- ggplot(DC_thesis_o,
                        aes(x = A_N_cat, y = MIF_NPX, 
                            colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "MIF (NPX)") +
    scale_y_continuous(breaks = seq(2, 8, by = 2), limits = c(2,8)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = MIF_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = MIF_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - MIF_NPX                                                                    
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           21.77732616      3     7.25910872    38.3812560    < .0000001   
   Age                5.16885551      1     5.16885551    27.3294111     0.0000003   
   sex                0.68806346      1     0.68806346     3.6380141     0.0571594   
   bmi                0.15906397      1     0.15906397     0.8410226     0.3596333   
   E4_Positive        0.03179824      1     0.03179824     0.1681276     0.6819914   
   Residuals         79.05701278    418     0.18913161                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.67111201    0.10052598    418.0000    -6.6760056    < .0000001   
              -    A+T-            0.04803969    0.06310216    418.0000     0.7613001       1.0000000   
              -    A+T+           -0.45012196    0.05924684    418.0000    -7.5974001    < .0000001   
   A-T+       -    A+T-            0.71915169    0.11063287    418.0000     6.5003440    < .0000001   
              -    A+T+            0.22099004    0.10809681    418.0000     2.0443716       0.2492573   
   A+T-       -    A+T+           -0.49816165    0.06401666    418.0000    -7.7817501    < .0000001   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(MIF_NPX, na.rm = TRUE), Std=sd(MIF_NPX, na.rm = TRUE),
            Max=max(MIF_NPX, na.rm = TRUE), Min=min(MIF_NPX, na.rm = TRUE))

3.10. TNFR1_AT

(TNFR1_A_T_plot <- ggplot(DC_thesis_o,
                          aes(x = A_N_cat, y = TNFR1_NPX, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR1 (NPX)") +
    scale_y_continuous(breaks = seq(0, 6, by = 2), limits = c(0,6)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR1_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TNFR1_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR1_NPX                                                                   
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           8.743021879      3    2.914340626    24.69981960    < .0000001   
   Age               2.705371062      1    2.705371062    22.92874641     0.0000023   
   sex               0.832566269      1    0.832566269     7.05622276     0.0082013   
   bmi               6.008044e-5      1    6.008044e-5    5.091979e-4     0.9820077   
   E4_Positive       0.003507677      1    0.003507677     0.02972850     0.8631911   
   Residuals        49.319970826    418    0.117990361                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                        
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t            p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.44272830    0.07939982    418.0000    -5.575936       0.0000003   
              -    A+T-            0.06695827    0.04984085    418.0000     1.343441       1.0000000   
              -    A+T+           -0.25433816    0.04679575    418.0000    -5.435070       0.0000006   
   A-T+       -    A+T-            0.50968656    0.08738268    418.0000     5.832810    < .0000001   
              -    A+T+            0.18839013    0.08537959    418.0000     2.206501       0.1673522   
   A+T-       -    A+T+           -0.32129643    0.05056316    418.0000    -6.354358    < .0000001   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(TNFR1_NPX, na.rm = TRUE), Std=sd(TNFR1_NPX, na.rm = TRUE),
            Max=max(TNFR1_NPX, na.rm = TRUE), Min=min(TNFR1_NPX, na.rm = TRUE))

3.11. TNFR2_AT

(TNFR2_A_T_plot <- ggplot(DC_thesis_o,
                          aes(x = A_N_cat, y = TNFR2_NPX, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR2 (NPX)") +
    scale_y_continuous(breaks = seq(-1, 4, by = 1), limits = c(-1,4)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR2_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TNFR2_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR2_NPX                                                                    
 ───────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F               p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat          10.898921737      3    3.632973912    27.010709836    < .0000001   
   Age               5.946841316      1    5.946841316    44.214026610    < .0000001   
   sex               1.905597715      1    1.905597715    14.167882347     0.0001911   
   bmi               0.001292876      1    0.001292876     0.009612370     0.9219454   
   E4_Positive       0.065730088      1    0.065730088     0.488695042     0.4848988   
   Residuals        56.221517483    418    0.134501238                                 
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.42424357    0.08477336    418.0000    -5.0044444       0.0000050   
              -    A+T-            0.03067686    0.05321393    418.0000     0.5764818       1.0000000   
              -    A+T+           -0.33780280    0.04996274    418.0000    -6.7610938    < .0000001   
   A-T+       -    A+T-            0.45492043    0.09329648    418.0000     4.8760729       0.0000092   
              -    A+T+            0.08644077    0.09115783    418.0000     0.9482539       1.0000000   
   A+T-       -    A+T+           -0.36847966    0.05398512    418.0000    -6.8255780    < .0000001   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(TNFR2_NPX, na.rm = TRUE), Std=sd(TNFR2_NPX, na.rm = TRUE),
            Max=max(TNFR2_NPX, na.rm = TRUE), Min=min(TNFR2_NPX, na.rm = TRUE))

3.12. ICAM1_AT

(ICAM1_A_T_plot <- ggplot(DC_thesis_o,
                          aes(x = A_N_cat, y = ICAM1_NPX, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "ICAM1 (NPX)") +
    scale_y_continuous(breaks = seq(-6,0, by = 1), limits = c(-6, 0)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = ICAM1_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = ICAM1_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - ICAM1_NPX                                                                  
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           4.883671641      3    1.627890547    10.60914025    0.0000010   
   Age               2.101375800      1    2.101375800    13.69489529    0.0002438   
   sex               1.173366409      1    1.173366409     7.64695687    0.0059387   
   bmi               0.719026934      1    0.719026934     4.68597695    0.0309751   
   E4_Positive       0.002154858      1    0.002154858     0.01404345    0.9057244   
   Residuals        64.138868251    418    0.153442269                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                          
 ─────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+          -0.363427430    0.09054589    418.0000    -4.01373724       0.0004250   
              -    A+T-          -0.002568053    0.05683747    418.0000    -0.04518239       1.0000000   
              -    A+T+          -0.207678355    0.05336489    418.0000    -3.89166622       0.0006950   
   A-T+       -    A+T-           0.360859377    0.09964938    418.0000     3.62129064       0.0019748   
              -    A+T+           0.155749075    0.09736510    418.0000     1.59963962       0.6626045   
   A+T-       -    A+T+          -0.205110303    0.05766117    418.0000    -3.55716506       0.0025069   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(ICAM1_NPX, na.rm = TRUE), Std=sd(ICAM1_NPX, na.rm = TRUE),
            Max=max(ICAM1_NPX, na.rm = TRUE), Min=min(ICAM1_NPX, na.rm = TRUE))

3.13. VCAM1_AT

(VCAM1_A_T_plot <- ggplot(DC_thesis_o,
                          aes(x = A_N_cat, y = VCAM1_NPX, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "VCAM1 (NPX)") +
    scale_y_continuous(breaks = seq(-4,1, by = 1), limits = c(-4, 1)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = VCAM1_NPX ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = VCAM1_NPX ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - VCAM1_NPX                                                                    
 ───────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F               p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat             5.4728949      3      1.8242983    15.967479463    < .0000001   
   Age                 2.6626682      1      2.6626682    23.305453614     0.0000019   
   sex                 3.2286382      1      3.2286382    28.259201822     0.0000002   
   bmi                 0.1902123      1      0.1902123     1.664865427     0.1976610   
   E4_Positive       6.676904e-4      1    6.676904e-4     0.005844073     0.9391004   
   Residuals          47.7568604    418      0.1142509                                 
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.40049158    0.07813147    418.0000    -5.1258676       0.0000027   
              -    A+T-            0.01534909    0.04904468    418.0000     0.3129613       1.0000000   
              -    A+T+           -0.20139767    0.04604822    418.0000    -4.3736252       0.0000927   
   A-T+       -    A+T-            0.41584066    0.08598681    418.0000     4.8360981       0.0000112   
              -    A+T+            0.19909390    0.08401572    418.0000     2.3697220       0.1095285   
   A+T-       -    A+T+           -0.21674676    0.04975545    418.0000    -4.3562412       0.0001000   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(VCAM1_NPX, na.rm = TRUE), Std=sd(VCAM1_NPX, na.rm = TRUE),
            Max=max(VCAM1_NPX, na.rm = TRUE), Min=min(VCAM1_NPX, na.rm = TRUE))

4. Diagnosis scheme

4.1. YKL40_Diag

(YKL40_diag_plot <- ggplot(DC_thesis_o,
                           aes(x = Diag, y = YKL40_NPX, 
                               colour = Diag, fill = Diag)) +
   geom_boxplot() +
   geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
   labs(x = NULL, y = "YKL40 (NPXL)") +
   scale_y_continuous(breaks = seq(3,9, by = 1), limits = c(3,9)) +
   scale_colour_manual(values = c("black","black", "black", "black")) + 
   scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
   theme_bw() +
   theme(legend.position = "none",
         panel.grid.major = element_blank(), 
         panel.grid.minor = element_blank()))


ancova(formula = YKL40_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = YKL40_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - YKL40_NPX                                                                    
 ───────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F               p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   Diag                4.2741905      3      1.4247302     7.481755332     0.0000688   
   Age                11.5133953      1     11.5133953    60.460855950    < .0000001   
   sex                 1.2660313      1      1.2660313     6.648371904     0.0102658   
   bmi                 0.7231212      1      0.7231212     3.797361769     0.0520021   
   E4_Positive       7.295689e-4      1    7.295689e-4     0.003831221     0.9506746   
   Residuals          79.5985955    418      0.1904273                                 
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          0.09721385    0.05492361    418.0000     1.7699830       0.4647534   
           -    MCI         -0.12726004    0.06461891    418.0000    -1.9693931       0.2974077   
           -    DAT         -0.16721530    0.08101355    418.0000    -2.0640411       0.2377823   
   SCD     -    MCI         -0.22447389    0.05691828    418.0000    -3.9437926       0.0005642   
           -    DAT         -0.26442915    0.07254896    418.0000    -3.6448370       0.0018076   
   MCI     -    DAT         -0.03995526    0.07828349    418.0000    -0.5103919       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(YKL40_NPX, na.rm = TRUE), Std=sd(YKL40_NPX, na.rm = TRUE),
            Max=max(YKL40_NPX, na.rm = TRUE), Min=min(YKL40_NPX, na.rm = TRUE))

4.2. Axl_Diag

(AXL_diag_plot <- ggplot(DC_thesis_o,
                         aes(x = Diag, y = AXL_NPX, 
                             colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "AXL (NPX)") +
    scale_y_continuous(breaks = seq(0, 5, by = 1), limits = c(0,5)) +
    scale_colour_manual(values = c("black","black", "black", "black")) + 
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = AXL_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = AXL_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - AXL_NPX                                                                    
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   Diag              0.674130199      3    0.224710066     1.29906035    0.2742929   
   Age               1.762043930      1    1.762043930    10.18646580    0.0015216   
   sex               1.336263991      1    1.336263991     7.72501026    0.0056919   
   bmi               0.925955523      1    0.925955523     5.35299609    0.0211710   
   E4_Positive       0.006857369      1    0.006857369     0.03964280    0.8422774   
   Residuals        72.305191723    418    0.172978928                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          0.09306956    0.05234691    418.0000     1.7779379       0.4568457   
           -    MCI          0.04150848    0.06158738    418.0000     0.6739771       1.0000000   
           -    DAT          0.11104174    0.07721287    418.0000     1.4381247       0.9068816   
   SCD     -    MCI         -0.05156108    0.05424801    418.0000    -0.9504696       1.0000000   
           -    DAT          0.01797218    0.06914539    418.0000     0.2599187       1.0000000   
   MCI     -    DAT          0.06953326    0.07461088    418.0000     0.9319453       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(AXL_NPX, na.rm = TRUE), Std=sd(AXL_NPX, na.rm = TRUE),
            Max=max(AXL_NPX, na.rm = TRUE), Min=min(AXL_NPX, na.rm = TRUE))

4.3. Tyro3_Diag

(Tyro3_Diag_plot <- ggplot(DC_thesis_o,
                           aes(x = Diag, y = TYRO3_NPX, 
                               colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Tyro3 (NPX)") +
    scale_y_continuous(breaks = seq(2, 6, by = 1), limits = c(2,6)) +
    scale_colour_manual(values = c("black","black", "black", "black")) + 
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TYRO3_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TYRO3_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TYRO3_NPX                                                                  
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   Diag              0.823692457      3    0.274564152     2.80747362    0.0393300   
   Age               1.330128254      1    1.330128254    13.60082863    0.0002559   
   sex               0.148209341      1    0.148209341     1.51547028    0.2189985   
   bmi               0.930758134      1    0.930758134     9.51718891    0.0021708   
   E4_Positive       0.002194833      1    0.002194833     0.02244261    0.8809879   
   Residuals        40.879392390    418    0.097797589                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD         0.087737540    0.03936031    418.0000     2.2290864       0.1580339   
           -    MCI         0.081875962    0.04630834    418.0000     1.7680610       0.4666807   
           -    DAT         0.156535120    0.05805735    418.0000     2.6962155       0.0437791   
   SCD     -    MCI        -0.005861578    0.04078977    418.0000    -0.1437022       1.0000000   
           -    DAT         0.068797580    0.05199131    418.0000     1.3232516       1.0000000   
   MCI     -    DAT         0.074659158    0.05610088    418.0000     1.3308019       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(TYRO3_NPX, na.rm = TRUE), Std=sd(TYRO3_NPX, na.rm = TRUE),
            Max=max(TYRO3_NPX, na.rm = TRUE), Min=min(TYRO3_NPX, na.rm = TRUE))
NA

4.4. TREM2_Diag

(TREM2_Diag_plot <- ggplot(DC_thesis_o,
                           aes(x = Diag, y = TREM2_NPX, 
                               colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TREM2 (NPX)") +
    scale_y_continuous(breaks = seq(0, 7, by = 1), limits = c(0,7)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TREM2_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TREM2_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TREM2_NPX                                                                   
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square     F              p           
 ──────────────────────────────────────────────────────────────────────────────────── 
   Diag              2.480042924      3     0.826680975     1.52492198    0.2074064   
   Age              11.232348359      1    11.232348359    20.71954646    0.0000070   
   sex               1.635500313      1     1.635500313     3.01689581    0.0831377   
   bmi               0.127087819      1     0.127087819     0.23443023    0.6285117   
   E4_Positive       0.006132992      1     0.006132992     0.01131311    0.9153453   
   Residuals       226.603493669    418     0.542113621                               
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                       
 ───────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD         0.161511144    0.09267010    418.0000     1.74286139       0.4925591   
           -    MCI        -0.001873218    0.10902856    418.0000    -0.01718099       1.0000000   
           -    DAT         0.041426642    0.13669048    418.0000     0.30306896       1.0000000   
   SCD     -    MCI        -0.163384362    0.09603562    418.0000    -1.70128911       0.5377942   
           -    DAT        -0.120084502    0.12240857    418.0000    -0.98101386       1.0000000   
   MCI     -    DAT         0.043299860    0.13208416    418.0000     0.32782023       1.0000000   
 ───────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(TREM2_NPX, na.rm = TRUE), Std=sd(TREM2_NPX, na.rm = TRUE),
            Max=max(TREM2_NPX, na.rm = TRUE), Min=min(TREM2_NPX, na.rm = TRUE))

4.5. C1q_Diag

(C1q_Diag_plot <- ggplot(DC_thesis_o,
                         aes(x = Diag, y = C1q_NPX, 
                             colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C1q (NPX)") +
    scale_y_continuous(breaks = seq(-4, 1, by = 1), limits = c(-4,1)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C1q_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = C1q_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C1q_NPX                                                                    
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   Diag               0.48599086      3     0.16199695     1.00917741    0.3885176   
   Age                4.28499616      1     4.28499616    26.69384378    0.0000004   
   sex                1.06539493      1     1.06539493     6.63699215    0.0103305   
   bmi                0.01320162      1     0.01320162     0.08224093    0.7744253   
   E4_Positive        0.08078377      1     0.08078377     0.50325119    0.4784706   
   Residuals         67.09893153    418     0.16052376                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD         -0.01563987    0.05042712    418.0000    -0.3101480       1.0000000   
           -    MCI         -0.06843072    0.05932869    418.0000    -1.1534171       1.0000000   
           -    DAT         -0.10759314    0.07438113    418.0000    -1.4465112       0.8926998   
   SCD     -    MCI         -0.05279085    0.05225849    418.0000    -1.0101871       1.0000000   
           -    DAT         -0.09195327    0.06660952    418.0000    -1.3804824       1.0000000   
   MCI     -    DAT         -0.03916242    0.07187457    418.0000    -0.5448717       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(C1q_NPX, na.rm = TRUE), Std=sd(C1q_NPX, na.rm = TRUE),
            Max=max(C1q_NPX, na.rm = TRUE), Min=min(C1q_NPX, na.rm = TRUE))

4.6. C3_Diag

(C3_Diag_plot <- ggplot(DC_thesis_o,
                        aes(x = Diag, y = C3_NPX, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C3 (NPX)") +
    scale_y_continuous(breaks = seq(-2.5, 5, by = 2.5), limits = c(-2.5,5)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C3_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = C3_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C3_NPX                                                                      
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F               p           
 ──────────────────────────────────────────────────────────────────────────────────── 
   Diag                 2.013136      3      0.6710452     1.991733771    0.1145672   
   Age                  1.571970      1      1.5719703     4.665775541    0.0313374   
   sex                  4.598419      1      4.5984189    13.648598037    0.0002497   
   bmi                  4.508262      1      4.5082624    13.381003807    0.0002867   
   E4_Positive       8.935991e-4      1    8.935991e-4     0.002652298    0.9589513   
   Residuals          140.830516    418      0.3369151                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD         0.069458086    0.07305580    418.0000     0.9507538       1.0000000   
           -    MCI        -0.009903556    0.08595187    418.0000    -0.1152221       1.0000000   
           -    DAT        -0.161109372    0.10775895    418.0000    -1.4950904       0.8138725   
   SCD     -    MCI        -0.079361642    0.07570899    418.0000    -1.0482460       1.0000000   
           -    DAT        -0.230567459    0.09649991    418.0000    -2.3893024       0.1039373   
   MCI     -    DAT        -0.151205817    0.10412759    418.0000    -1.4521205       0.8833096   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(C3_NPX, na.rm = TRUE), Std=sd(C3_NPX, na.rm = TRUE),
            Max=max(C3_NPX, na.rm = TRUE), Min=min(C3_NPX, na.rm = TRUE))

4.7. FB_Diag

(FB_Diag_plot <- ggplot(DC_thesis_o,
                        aes(x = Diag, y = Factor_B_NPX, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor B (NPX)") +
    scale_y_continuous(breaks = seq(0, 5, by = 1), limits = c(0,5)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Factor_B_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = Factor_B_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_B_NPX                                                              
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag               2.11169609      3     0.70389870     2.8607819    0.0366409   
   Age                0.05979003      1     0.05979003     0.2429983    0.6223077   
   sex                1.69099589      1     1.69099589     6.8725378    0.0090724   
   bmi                4.97683379      1     4.97683379    20.2268254    0.0000089   
   E4_Positive        0.13968365      1     0.13968365     0.5677017    0.4515978   
   Residuals        102.84938388    418     0.24605116                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          0.07863422    0.06243199    418.0000     1.2595180       1.0000000   
           -    MCI         -0.05416761    0.07345271    418.0000    -0.7374488       1.0000000   
           -    DAT         -0.13292529    0.09208859    418.0000    -1.4434501       0.8978563   
   SCD     -    MCI         -0.13280183    0.06469935    418.0000    -2.0525992       0.2444014   
           -    DAT         -0.21155950    0.08246684    418.0000    -2.5653887       0.0639234   
   MCI     -    DAT         -0.07875767    0.08898531    418.0000    -0.8850638       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(Factor_B_NPX, na.rm = TRUE), Std=sd(Factor_B_NPX, na.rm = TRUE),
            Max=max(Factor_B_NPX, na.rm = TRUE), Min=min(Factor_B_NPX, na.rm = TRUE))
NA

4.8. FH_Diag

(FH_Diag_plot <- ggplot(DC_thesis_o,
                        aes(x = Diag, y = Factor_H_NPX, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor H (NPX)") +
    scale_y_continuous(breaks = seq(0, 5, by = 1), limits = c(0,5)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))



ancova(formula = Factor_H_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = Factor_H_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_H_NPX                                                                 
 ───────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F               p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   Diag                 1.974612      3      0.6582040     3.902961733     0.0090460   
   Age                  1.731296      1      1.7312958    10.266090202     0.0014588   
   sex                  5.274957      1      5.2749574    31.278992474    < .0000001   
   bmi                  1.406645      1      1.4066452     8.341004910     0.0040774   
   E4_Positive       5.063216e-4      1    5.063216e-4     0.003002343     0.9563290   
   Residuals           70.492430    418      0.1686422                                 
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          0.08031039    0.05168655    418.0000     1.5537966       0.7259383   
           -    MCI         -0.05489890    0.06081045    418.0000    -0.9027873       1.0000000   
           -    DAT         -0.11727053    0.07623883    418.0000    -1.5381995       0.7485388   
   SCD     -    MCI         -0.13520929    0.05356367    418.0000    -2.5242725       0.0717789   
           -    DAT         -0.19758092    0.06827312    418.0000    -2.8939782       0.0240185   
   MCI     -    DAT         -0.06237163    0.07366966    418.0000    -0.8466393       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(Factor_H_NPX, na.rm = TRUE), Std=sd(Factor_H_NPX, na.rm = TRUE),
            Max=max(Factor_H_NPX, na.rm = TRUE), Min=min(Factor_H_NPX, na.rm = TRUE))

4.9. MIF_Diag

(MIF_Diag_plot <- ggplot(DC_thesis_o,
                         aes(x = Diag, y = MIF_NPX, 
                             colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "MIF (NPX)") +
    scale_y_continuous(breaks = seq(2, 8, by = 2), limits = c(2,8)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = MIF_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = MIF_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - MIF_NPX                                                                   
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p            
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag                3.5153080      3      1.1717693     5.032927     0.0019493   
   Age                 8.3397025      1      8.3397025    35.820287    < .0000001   
   sex                 1.1000618      1      1.1000618     4.724932     0.0302890   
   bmi                 1.2334483      1      1.2334483     5.297847     0.0218427   
   E4_Positive         0.3637876      1      0.3637876     1.562523     0.2119956   
   Residuals          97.3190309    418      0.2328206                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                       
 ───────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD         0.173095706    0.06073027    418.0000     2.85023759       0.0275092   
           -    MCI        -0.023814681    0.07145059    418.0000    -0.33330277       1.0000000   
           -    DAT        -0.015824877    0.08957852    418.0000    -0.17665929       1.0000000   
   SCD     -    MCI        -0.196910387    0.06293583    418.0000    -3.12874864       0.0112708   
           -    DAT        -0.188920583    0.08021903    418.0000    -2.35505944       0.1138869   
   MCI     -    DAT         0.007989804    0.08655982    418.0000     0.09230384       1.0000000   
 ───────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(MIF_NPX, na.rm = TRUE), Std=sd(MIF_NPX, na.rm = TRUE),
            Max=max(MIF_NPX, na.rm = TRUE), Min=min(MIF_NPX, na.rm = TRUE))

4.10. TNFR1_Diag

(TNFR1_Diag_plot <- ggplot(DC_thesis_o,
                           aes(x = Diag, y = TNFR1_NPX, 
                               colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR1 (NPX)") +
    scale_y_continuous(breaks = seq(1, 6, by = 1), limits = c(1,6)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR1_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TNFR1_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR1_NPX                                                                   
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   Diag              0.916206264      3    0.305402088     2.23386267     0.0836956   
   Age               4.122872311      1    4.122872311    30.15673729    < .0000001   
   sex               1.001843341      1    1.001843341     7.32798015     0.0070672   
   bmi               0.207437302      1    0.207437302     1.51729953     0.2187211   
   E4_Positive       0.008297865      1    0.008297865     0.06069471     0.8055222   
   Residuals        57.146786442    418    0.136714800                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                       
 ───────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          0.10024002    0.04653741    418.0000     2.15396627       0.1908830   
           -    MCI         9.373281e-4    0.05475236    418.0000     0.01711941       1.0000000   
           -    DAT          0.04060782    0.06864373    418.0000     0.59157356       1.0000000   
   SCD     -    MCI         -0.09930269    0.04822752    418.0000    -2.05904603       0.2406529   
           -    DAT         -0.05963220    0.06147159    418.0000    -0.97007751       1.0000000   
   MCI     -    DAT          0.03967049    0.06633051    418.0000     0.59807300       1.0000000   
 ───────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(TNFR1_NPX, na.rm = TRUE), Std=sd(TNFR1_NPX, na.rm = TRUE),
            Max=max(TNFR1_NPX, na.rm = TRUE), Min=min(TNFR1_NPX, na.rm = TRUE))
NA

4.11. TNFR2_Diag

(TNFR2_Diag_plot <- ggplot(DC_thesis_o,
                           aes(x = Diag, y = TNFR2_NPX, 
                               colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR2 (NPX)") +
    scale_y_continuous(breaks = seq(-1, 4, by = 1), limits = c(-1,4)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR2_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TNFR2_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR2_NPX                                                                 
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p            
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag                1.5060149      3      0.5020050     3.198048     0.0233632   
   Age                 7.9232444      1      7.9232444    50.475428    < .0000001   
   sex                 2.3658934      1      2.3658934    15.072043     0.0001202   
   bmi                 0.2060290      1      0.2060290     1.312518     0.2525947   
   E4_Positive         0.4020182      1      0.4020182     2.561077     0.1102794   
   Residuals          65.6144243    418      0.1569723                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          0.09658881    0.04986617    418.0000     1.9369607       0.3205418   
           -    MCI         -0.03104281    0.05866872    418.0000    -0.5291203       1.0000000   
           -    DAT         -0.05060889    0.07355372    418.0000    -0.6880534       1.0000000   
   SCD     -    MCI         -0.12763162    0.05167717    418.0000    -2.4697873       0.0835068   
           -    DAT         -0.14719770    0.06586856    418.0000    -2.2347186       0.1557816   
   MCI     -    DAT         -0.01956608    0.07107504    418.0000    -0.2752876       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(TNFR2_NPX, na.rm = TRUE), Std=sd(TNFR2_NPX, na.rm = TRUE),
            Max=max(TNFR2_NPX, na.rm = TRUE), Min=min(TNFR2_NPX, na.rm = TRUE))
NA

4.12. ICAM1_Diag

(ICAM1_Diag_plot <- ggplot(DC_thesis_o,
                           aes(x = Diag, y = ICAM1_NPX, 
                               colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "ICAM1 (NPX)") +
    scale_y_continuous(breaks = seq(-6,0, by = 1), limits = c(-6, 0)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))

ancova(formula = ICAM1_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = ICAM1_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - ICAM1_NPX                                                                  
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   Diag              2.241751226      3    0.747250409     4.67725340    0.0031639   
   Age               2.001307948      1    2.001307948    12.52675716    0.0004462   
   sex               1.518533220      1    1.518533220     9.50493246    0.0021850   
   bmi               0.312637989      1    0.312637989     1.95689033    0.1625878   
   E4_Positive       0.005698476      1    0.005698476     0.03566839    0.8502936   
   Residuals        66.780788666    418    0.159762652                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          0.03708414    0.05030743    418.0000     0.7371504       1.0000000   
           -    MCI         -0.10784006    0.05918787    418.0000    -1.8219959       0.4150204   
           -    DAT         -0.17224326    0.07420459    418.0000    -2.3211942       0.1245392   
   SCD     -    MCI         -0.14492420    0.05213445    418.0000    -2.7798162       0.0341072   
           -    DAT         -0.20932740    0.06645142    418.0000    -3.1500815       0.0104972   
   MCI     -    DAT         -0.06440320    0.07170397    418.0000    -0.8981817       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(ICAM1_NPX, na.rm = TRUE), Std=sd(ICAM1_NPX, na.rm = TRUE),
            Max=max(ICAM1_NPX, na.rm = TRUE), Min=min(ICAM1_NPX, na.rm = TRUE))

4.13. VCAM1_Diag

(VCAM1_Diag_plot <- ggplot(DC_thesis_o,
                           aes(x = Diag, y = VCAM1_NPX, 
                               colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "VCAM1 (NPX)") +
    scale_y_continuous(breaks = seq(-4,1, by = 1), limits = c(-4, 1)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_manual(values = c("honeydew3","indianred1", "#1ca9c9", "springgreen4")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))

ancova(formula = VCAM1_NPX ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = VCAM1_NPX ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - VCAM1_NPX                                                                  
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p           
 ─────────────────────────────────────────────────────────────────────────────────── 
   Diag               0.62275236      3     0.20758412     1.64940326    0.1773703   
   Age                3.21055122      1     3.21055122    25.51010963    0.0000007   
   sex                3.56111026      1     3.56111026    28.29555018    0.0000002   
   bmi                0.01165933      1     0.01165933     0.09264166    0.7609968   
   E4_Positive        0.01120821      1     0.01120821     0.08905717    0.7655275   
   Residuals         52.60700289    418     0.12585407                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   CN      -    SCD          0.04088060    0.04465068    418.0000     0.9155648       1.0000000   
           -    MCI         -0.04085548    0.05253258    418.0000    -0.7777170       1.0000000   
           -    DAT         -0.06483532    0.06586076    418.0000    -0.9844302       1.0000000   
   SCD     -    MCI         -0.08173608    0.04627227    418.0000    -1.7664158       0.4683356   
           -    DAT         -0.10571592    0.05897939    418.0000    -1.7924213       0.4427312   
   MCI     -    DAT         -0.02397984    0.06364133    418.0000    -0.3767967       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(Diag)%>% 
  summarise(Median=median(VCAM1_NPX, na.rm = TRUE), Std=sd(VCAM1_NPX, na.rm = TRUE),
            Max=max(VCAM1_NPX, na.rm = TRUE), Min=min(VCAM1_NPX, na.rm = TRUE))

5. Diagnosis + Tau scheme

5.1. YKL40_Diag+T

(YKL40_diag_T_plot <- ggplot(DC_thesis_o,
                             aes(x = clinical_N_cat, y = YKL40_NPX, 
                                 colour = clinical_N_cat, fill = clinical_N_cat)) +
   geom_boxplot() +
   geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
   labs(x = NULL, y = "YKL40 (NPX)") +
   scale_y_continuous(breaks = seq(3,9, by = 1), limits = c(3,9)) +
   scale_x_discrete(labels = c('CN T-', 'CN T+', "SCD T-", "SCD T+", "MCI T-", "MCI T+",
                               'DAT T-','DAT T+')) +
   scale_colour_manual(values = c("black",'black', "black", "black", 
                                  "black", "black","black", 'black')) +
   scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                "lightgreen", "coral","aquamarine2", 'deeppink')) +
   theme_bw() +
   theme(legend.position = "none",
         panel.grid.major = element_blank(), 
         panel.grid.minor = element_blank()))


ancova(formula = YKL40_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = YKL40_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - YKL40_NPX                                                                     
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        13.0638520      7      1.8662646    10.9115261    < .0000001   
   Age                    9.6497683      1      9.6497683    56.4194918    < .0000001   
   sex                    0.9043688      1      0.9043688     5.2875908     0.0219749   
   bmi                    0.1933684      1      0.1933684     1.1305711     0.2882734   
   E4_Positive            0.1522449      1      0.1522449     0.8901332     0.3459914   
   Residuals             70.8089341    414      0.1710361                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                -0.275223009    0.10582820    414.0000    -2.60065859       0.2698522   
                     -    SCD_T-                0.109988541    0.05705852    414.0000     1.92764443       1.0000000   
                     -    SCD_T+               -0.320932151    0.09045350    414.0000    -3.54803445       0.0121117   
                     -    MCI_T-               -0.055590936    0.07643626    414.0000    -0.72728488       1.0000000   
                     -    MCI_T+               -0.345237912    0.07996944    414.0000    -4.31712317       0.0005544   
                     -    DAT_T-               -0.004974409    0.11398059    414.0000    -0.04364259       1.0000000   
                     -    DAT_T+               -0.372832857    0.09008856    414.0000    -4.13851487       0.0011863   
   CN_T+             -    SCD_T-                0.385211550    0.10159586    414.0000     3.79160659       0.0048143   
                     -    SCD_T+               -0.045709142    0.12207518    414.0000    -0.37443436       1.0000000   
                     -    MCI_T-                0.219632073    0.11373039    414.0000     1.93116432       1.0000000   
                     -    MCI_T+               -0.070014903    0.11488944    414.0000    -0.60941114       1.0000000   
                     -    DAT_T-                0.270248600    0.14042946    414.0000     1.92444379       1.0000000   
                     -    DAT_T+               -0.097609848    0.12122003    414.0000    -0.80522869       1.0000000   
   SCD_T-            -    SCD_T+               -0.430920692    0.08373018    414.0000    -5.14653976       0.0000115   
                     -    MCI_T-               -0.165579477    0.06975152    414.0000    -2.37384751       0.5056577   
                     -    MCI_T+               -0.455226453    0.07287684    414.0000    -6.24651729    < .0000001   
                     -    DAT_T-               -0.114962950    0.10791714    414.0000    -1.06528910       1.0000000   
                     -    DAT_T+               -0.482821398    0.08194664    414.0000    -5.89189958       0.0000002   
   SCD_T+            -    MCI_T-                0.265341215    0.09726255    414.0000     2.72809240       0.1859578   
                     -    MCI_T+               -0.024305761    0.09886704    414.0000    -0.24584291       1.0000000   
                     -    DAT_T-                0.315957742    0.12658772    414.0000     2.49595896       0.3625955   
                     -    DAT_T+               -0.051900706    0.10478031    414.0000    -0.49532880       1.0000000   
   MCI_T-            -    MCI_T+               -0.289646976    0.08838043    414.0000    -3.27727490       0.0318225   
                     -    DAT_T-                0.050616527    0.11874860    414.0000     0.42624945       1.0000000   
                     -    DAT_T+               -0.317241921    0.09576211    414.0000    -3.31281241       0.0281338   
   MCI_T+            -    DAT_T-                0.340263503    0.11962920    414.0000     2.84431818       0.1307988   
                     -    DAT_T+               -0.027594945    0.09534928    414.0000    -0.28940906       1.0000000   
   DAT_T-            -    DAT_T+               -0.367858448    0.12299203    414.0000    -2.99091288       0.0825329   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(YKL40_NPX, na.rm = TRUE), Std=sd(YKL40_NPX, na.rm = TRUE),
            Max=max(YKL40_NPX, na.rm = TRUE), Min=min(YKL40_NPX, na.rm = TRUE))
NA

5.2. Axl_Diag+T

(AXL_diag_T_plot <- ggplot(DC_thesis_o,
                           aes(x = clinical_N_cat, y = AXL_NPX, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "AXL (NPX)") +
    scale_y_continuous(breaks = seq(0, 5, by = 1), limits = c(0,5)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = AXL_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = AXL_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - AXL_NPX                                                                     
 ──────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F           p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         9.1842515      7      1.3120359    8.514496    < .0000001   
   Age                    1.1123074      1      1.1123074    7.218352     0.0075068   
   sex                    0.9746999      1      0.9746999    6.325344     0.0122803   
   bmi                    0.2990524      1      0.2990524    1.940710     0.1643391   
   E4_Positive            0.2396285      1      0.2396285    1.555076     0.2130926   
   Residuals             63.7950704    414      0.1540944                             
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -0.27367273    0.10045023    414.0000    -2.7244610       0.1879780   
                     -    SCD_T-                 0.10465433    0.05415893    414.0000     1.9323561       1.0000000   
                     -    SCD_T+                -0.31680021    0.08585685    414.0000    -3.6898655       0.0071214   
                     -    MCI_T-                 0.12251190    0.07255193    414.0000     1.6886099       1.0000000   
                     -    MCI_T+                -0.18551496    0.07590556    414.0000    -2.4440235       0.4183461   
                     -    DAT_T-                 0.24681578    0.10818833    414.0000     2.2813530       0.6449693   
                     -    DAT_T+                -0.08089916    0.08551045    414.0000    -0.9460734       1.0000000   
   CN_T+             -    SCD_T-                 0.37832707    0.09643297    414.0000     3.9232126       0.0028638   
                     -    SCD_T+                -0.04312748    0.11587157    414.0000    -0.3722007       1.0000000   
                     -    MCI_T-                 0.39618464    0.10795085    414.0000     3.6700465       0.0076779   
                     -    MCI_T+                 0.08815777    0.10905100    414.0000     0.8084087       1.0000000   
                     -    DAT_T-                 0.52048851    0.13329313    414.0000     3.9048414       0.0030818   
                     -    DAT_T+                 0.19277357    0.11505988    414.0000     1.6754195       1.0000000   
   SCD_T-            -    SCD_T+                -0.42145455    0.07947519    414.0000    -5.3029703       0.0000052   
                     -    MCI_T-                 0.01785757    0.06620690    414.0000     0.2697237       1.0000000   
                     -    MCI_T+                -0.29016930    0.06917339    414.0000    -4.1948108       0.0009361   
                     -    DAT_T-                 0.14216145    0.10243301    414.0000     1.3878480       1.0000000   
                     -    DAT_T+                -0.18555350    0.07778229    414.0000    -2.3855495       0.4900695   
   SCD_T+            -    MCI_T-                 0.43931212    0.09231987    414.0000     4.7585870       0.0000755   
                     -    MCI_T+                 0.13128525    0.09384282    414.0000     1.3989908       1.0000000   
                     -    DAT_T-                 0.56361600    0.12015479    414.0000     4.6907492       0.0001037   
                     -    DAT_T+                 0.23590105    0.09945559    414.0000     2.3719234       0.5082620   
   MCI_T-            -    MCI_T+                -0.30802687    0.08388912    414.0000    -3.6718332       0.0076261   
                     -    DAT_T-                 0.12430388    0.11271405    414.0000     1.1028251       1.0000000   
                     -    DAT_T+                -0.20341107    0.09089568    414.0000    -2.2378518       0.7213326   
   MCI_T+            -    DAT_T-                 0.43233074    0.11354989    414.0000     3.8074078       0.0045267   
                     -    DAT_T+                 0.10461580    0.09050383    414.0000     1.1559268       1.0000000   
   DAT_T-            -    DAT_T+                -0.32771494    0.11674183    414.0000    -2.8071766       0.1465509   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(AXL_NPX, na.rm = TRUE), Std=sd(AXL_NPX, na.rm = TRUE),
            Max=max(AXL_NPX, na.rm = TRUE), Min=min(AXL_NPX, na.rm = TRUE))

5.3. Tyro3_Diag+T

(Tyro3_Diag_T_plot <- ggplot(DC_thesis_o,
                             aes(x = clinical_N_cat, y = TYRO3_NPX, 
                                 colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Tyro3 (NPX)") +
    scale_y_continuous(breaks = seq(2, 6, by = 1), limits = c(2,6)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TYRO3_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TYRO3_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TYRO3_NPX                                                                     
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        5.68315373      7     0.81187910     9.3314434    < .0000001   
   Age                   0.92191103      1     0.92191103    10.5961104     0.0012264   
   sex                   0.08251463      1     0.08251463     0.9483931     0.3306973   
   bmi                   0.40616118      1     0.40616118     4.6682690     0.0312979   
   E4_Positive           0.07522119      1     0.07522119     0.8645650     0.3530062   
   Residuals            36.01993112    414     0.08700466                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                -0.198816574    0.07547946    414.0000    -2.6340486       0.2451007   
                     -    SCD_T-                0.091749234    0.04069564    414.0000     2.2545222       0.6911879   
                     -    SCD_T+               -0.187656450    0.06451383    414.0000    -2.9087787       0.1070692   
                     -    MCI_T-                0.167786241    0.05451636    414.0000     3.0777228       0.0622877   
                     -    MCI_T+               -0.112710410    0.05703631    414.0000    -1.9761167       1.0000000   
                     -    DAT_T-                0.270833375    0.08129397    414.0000     3.3315311       0.0263546   
                     -    DAT_T+                0.008125375    0.06425354    414.0000     0.1264580       1.0000000   
   CN_T+             -    SCD_T-                0.290565809    0.07246085    414.0000     4.0099695       0.0020172   
                     -    SCD_T+                0.011160124    0.08706724    414.0000     0.1281782       1.0000000   
                     -    MCI_T-                0.366602815    0.08111552    414.0000     4.5195152       0.0002268   
                     -    MCI_T+                0.086106164    0.08194218    414.0000     1.0508161       1.0000000   
                     -    DAT_T-                0.469649950    0.10015800    414.0000     4.6890909       0.0001045   
                     -    DAT_T+                0.206941949    0.08645733    414.0000     2.3935733       0.4796270   
   SCD_T-            -    SCD_T+               -0.279405685    0.05971857    414.0000    -4.6787066       0.0001096   
                     -    MCI_T-                0.076037007    0.04974863    414.0000     1.5284242       1.0000000   
                     -    MCI_T+               -0.204459645    0.05197769    414.0000    -3.9336041       0.0027470   
                     -    DAT_T-                0.179084141    0.07696935    414.0000     2.3266942       0.5729721   
                     -    DAT_T+               -0.083623860    0.05844651    414.0000    -1.4307759       1.0000000   
   SCD_T+            -    MCI_T-                0.355442692    0.06937022    414.0000     5.1238516       0.0000129   
                     -    MCI_T+                0.074946040    0.07051458    414.0000     1.0628445       1.0000000   
                     -    DAT_T-                0.458489826    0.09028570    414.0000     5.0782109       0.0000162   
                     -    DAT_T+                0.195781825    0.07473208    414.0000     2.6197828       0.2554153   
   MCI_T-            -    MCI_T+               -0.280496651    0.06303526    414.0000    -4.4498374       0.0003097   
                     -    DAT_T-                0.103047134    0.08469464    414.0000     1.2166902       1.0000000   
                     -    DAT_T+               -0.159660866    0.06830007    414.0000    -2.3376385       0.5566857   
   MCI_T+            -    DAT_T-                0.383543785    0.08532270    414.0000     4.4952137       0.0002529   
                     -    DAT_T+                0.120835785    0.06800562    414.0000     1.7768499       1.0000000   
   DAT_T-            -    DAT_T+               -0.262708001    0.08772116    414.0000    -2.9948075       0.0815088   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(TYRO3_NPX, na.rm = TRUE), Std=sd(TYRO3_NPX, na.rm = TRUE),
            Max=max(TYRO3_NPX, na.rm = TRUE), Min=min(TYRO3_NPX, na.rm = TRUE))

5.4. TREM2_Diag+T

(TREM2_Diag_T_plot <- ggplot(DC_thesis_o,
                             aes(x = clinical_N_cat, y = TREM2_NPX, 
                                 colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TREM2 (NPX)") +
    scale_y_continuous(breaks = seq(0, 7, by = 1), limits = c(0,7)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TREM2_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TREM2_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TREM2_NPX                                                                    
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p           
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        21.4878874      7      3.0696982     6.1217808    0.0000008   
   Age                    8.6051038      1      8.6051038    17.1608268    0.0000417   
   sex                    1.0259169      1      1.0259169     2.0459465    0.1533663   
   bmi                    0.9296899      1      0.9296899     1.8540448    0.1740542   
   E4_Positive            0.4779251      1      0.4779251     0.9531076    0.3294996   
   Residuals            207.5956491    414      0.5014388                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -0.47386918    0.18120346    414.0000    -2.6151221       0.2588684   
                     -    SCD_T-                 0.16324659    0.09769799    414.0000     1.6709310       1.0000000   
                     -    SCD_T+                -0.44346985    0.15487827    414.0000    -2.8633445       0.1233403   
                     -    MCI_T-                 0.09219064    0.13087736    414.0000     0.7044048       1.0000000   
                     -    MCI_T+                -0.33600842    0.13692701    414.0000    -2.4539235       0.4071680   
                     -    DAT_T-                 0.26051907    0.19516233    414.0000     1.3348840       1.0000000   
                     -    DAT_T+                -0.27071415    0.15425340    414.0000    -1.7549963       1.0000000   
   CN_T+             -    SCD_T-                 0.63711578    0.17395669    414.0000     3.6624966       0.0079005   
                     -    SCD_T+                 0.03039933    0.20902223    414.0000     0.1454359       1.0000000   
                     -    MCI_T-                 0.56605983    0.19473393    414.0000     2.9068372       0.1077224   
                     -    MCI_T+                 0.13786076    0.19671850    414.0000     0.7008022       1.0000000   
                     -    DAT_T-                 0.73438825    0.24044919    414.0000     3.0542347       0.0672592   
                     -    DAT_T+                 0.20315503    0.20755801    414.0000     0.9787868       1.0000000   
   SCD_T-            -    SCD_T+                -0.60671645    0.14336631    414.0000    -4.2319318       0.0007996   
                     -    MCI_T-                -0.07105595    0.11943147    414.0000    -0.5949516       1.0000000   
                     -    MCI_T+                -0.49925502    0.12478278    414.0000    -4.0009931       0.0020923   
                     -    DAT_T-                 0.09727247    0.18478023    414.0000     0.5264225       1.0000000   
                     -    DAT_T+                -0.43396074    0.14031247    414.0000    -3.0928167       0.0592738   
   SCD_T+            -    MCI_T-                 0.53566050    0.16653700    414.0000     3.2164654       0.0391916   
                     -    MCI_T+                 0.10746143    0.16928428    414.0000     0.6347986       1.0000000   
                     -    DAT_T-                 0.70398892    0.21674878    414.0000     3.2479487       0.0351991   
                     -    DAT_T+                 0.17275570    0.17940923    414.0000     0.9629143       1.0000000   
   MCI_T-            -    MCI_T+                -0.42819907    0.15132867    414.0000    -2.8295964       0.1368486   
                     -    DAT_T-                 0.16832842    0.20332632    414.0000     0.8278732       1.0000000   
                     -    DAT_T+                -0.36290479    0.16396790    414.0000    -2.2132674       0.7678679   
   MCI_T+            -    DAT_T-                 0.59652749    0.20483411    414.0000     2.9122468       0.1059114   
                     -    DAT_T+                 0.06529427    0.16326102    414.0000     0.3999379       1.0000000   
   DAT_T-            -    DAT_T+                -0.53123322    0.21059210    414.0000    -2.5225696       0.3366702   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(TREM2_NPX, na.rm = TRUE), Std=sd(TREM2_NPX, na.rm = TRUE),
            Max=max(TREM2_NPX, na.rm = TRUE), Min=min(TREM2_NPX, na.rm = TRUE))

5.5. C1q_Diag+T

(C1q_Diag_T_plot <- ggplot(DC_thesis_o,
                           aes(x = clinical_N_cat, y = C1q_NPX, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C1q (NPX)") +
    scale_y_continuous(breaks = seq(-4, 1, by = 1), limits = c(-4,1)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C1q_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = C1q_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C1q_NPX                                                                        
 ─────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F               p           
 ─────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        5.02026935      7     0.71718134     4.745699988    0.0000382   
   Age                   3.54484724      1     3.54484724    23.456803286    0.0000018   
   sex                   0.83094859      1     0.83094859     5.498515506    0.0195042   
   bmi                   0.02363702      1     0.02363702     0.156409829    0.6926874   
   E4_Positive          8.361946e-4      1    8.361946e-4     0.005533229    0.9407394   
   Residuals            62.56465304    414     0.15112235                                
 ─────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                -0.199254731    0.09947682    414.0000    -2.00302676       1.0000000   
                     -    SCD_T-               -0.011093473    0.05363410    414.0000    -0.20683619       1.0000000   
                     -    SCD_T+               -0.292056629    0.08502485    414.0000    -3.43495599       0.0182699   
                     -    MCI_T-               -0.036107651    0.07184887    414.0000    -0.50255004       1.0000000   
                     -    MCI_T+               -0.203620965    0.07517000    414.0000    -2.70880635       0.1969155   
                     -    DAT_T-                0.078726778    0.10713994    414.0000     0.73480328       1.0000000   
                     -    DAT_T+               -0.287767143    0.08468181    414.0000    -3.39821659       0.0208313   
   CN_T+             -    SCD_T-                0.188161257    0.09549849    414.0000     1.97030601       1.0000000   
                     -    SCD_T+               -0.092801898    0.11474873    414.0000    -0.80874013       1.0000000   
                     -    MCI_T-                0.163147080    0.10690476    414.0000     1.52609750       1.0000000   
                     -    MCI_T+               -0.004366235    0.10799424    414.0000    -0.04043026       1.0000000   
                     -    DAT_T-                0.277981509    0.13200145    414.0000     2.10589733       1.0000000   
                     -    DAT_T+               -0.088512413    0.11394490    414.0000    -0.77680013       1.0000000   
   SCD_T-            -    SCD_T+               -0.280963156    0.07870503    414.0000    -3.56982449       0.0111752   
                     -    MCI_T-               -0.025014177    0.06556532    414.0000    -0.38151537       1.0000000   
                     -    MCI_T+               -0.192527492    0.06850307    414.0000    -2.81049435       0.1450769   
                     -    DAT_T-                0.089820251    0.10144039    414.0000     0.88544860       1.0000000   
                     -    DAT_T+               -0.276673670    0.07702854    414.0000    -3.59183325       0.0102986   
   SCD_T+            -    MCI_T-                0.255948978    0.09142524    414.0000     2.79954383       0.1499937   
                     -    MCI_T+                0.088435664    0.09293344    414.0000     0.95160214       1.0000000   
                     -    DAT_T-                0.370783407    0.11899044    414.0000     3.11607740       0.0548910   
                     -    DAT_T+                0.004289486    0.09849182    414.0000     0.04355169       1.0000000   
   MCI_T-            -    MCI_T+               -0.167513315    0.08307620    414.0000    -2.01638154       1.0000000   
                     -    DAT_T-                0.114834429    0.11162179    414.0000     1.02878142       1.0000000   
                     -    DAT_T+               -0.251659492    0.09001486    414.0000    -2.79575492       0.1517298   
   MCI_T+            -    DAT_T-                0.282347743    0.11244954    414.0000     2.51088393       0.3478447   
                     -    DAT_T+               -0.084146178    0.08962680    414.0000    -0.93885060       1.0000000   
   DAT_T-            -    DAT_T+               -0.366493921    0.11561055    414.0000    -3.17007336       0.0458432   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(C1q_NPX, na.rm = TRUE), Std=sd(C1q_NPX, na.rm = TRUE),
            Max=max(C1q_NPX, na.rm = TRUE), Min=min(C1q_NPX, na.rm = TRUE))

5.6. C3_Diag+T

(C3_Diag_T_plot <- ggplot(DC_thesis_o,
                          aes(x = clinical_N_cat, y = C3_NPX, 
                              colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C3 (NPX)") +
    scale_y_continuous(breaks = seq(-2.5, 5, by = 2.5), limits = c(-2.5,5)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = C3_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = C3_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C3_NPX                                                                         
 ─────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F               p           
 ─────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat          3.339599      7      0.4770856     1.415825775    0.1970620   
   Age                     1.443481      1      1.4434810     4.283754533    0.0390980   
   sex                     4.247121      1      4.2471212    12.603993630    0.0004291   
   bmi                     4.144897      1      4.1448972    12.300627811    0.0005024   
   E4_Positive          9.572331e-4      1    9.572331e-4     0.002840738    0.9575197   
   Residuals             139.504052    414      0.3369663                                
 ─────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 0.066362115    0.14854252    414.0000     0.44675502       1.0000000   
                     -    SCD_T-                0.108694599    0.08008845    414.0000     1.35718193       1.0000000   
                     -    SCD_T+               -0.061362393    0.12696230    414.0000    -0.48331192       1.0000000   
                     -    MCI_T-               -0.056652486    0.10728742    414.0000    -0.52804406       1.0000000   
                     -    MCI_T+                0.063073852    0.11224666    414.0000     0.56192186       1.0000000   
                     -    DAT_T-               -0.245473293    0.15998538    414.0000    -1.53434833       1.0000000   
                     -    DAT_T+               -0.102434019    0.12645006    414.0000    -0.81007489       1.0000000   
   CN_T+             -    SCD_T-                0.042332484    0.14260193    414.0000     0.29685771       1.0000000   
                     -    SCD_T+               -0.127724508    0.17134710    414.0000    -0.74541388       1.0000000   
                     -    MCI_T-               -0.123014601    0.15963419    414.0000    -0.77060309       1.0000000   
                     -    MCI_T+               -0.003288263    0.16126105    414.0000    -0.02039093       1.0000000   
                     -    DAT_T-               -0.311835408    0.19710952    414.0000    -1.58204132       1.0000000   
                     -    DAT_T+               -0.168796134    0.17014680    414.0000    -0.99206178       1.0000000   
   SCD_T-            -    SCD_T+               -0.170056992    0.11752531    414.0000    -1.44698188       1.0000000   
                     -    MCI_T-               -0.165347086    0.09790459    414.0000    -1.68885930       1.0000000   
                     -    MCI_T+               -0.045620747    0.10229135    414.0000    -0.44598830       1.0000000   
                     -    DAT_T-               -0.354167893    0.15147460    414.0000    -2.33813394       0.5559581   
                     -    DAT_T+               -0.211128619    0.11502191    414.0000    -1.83555140       1.0000000   
   SCD_T+            -    MCI_T-                0.004709906    0.13651960    414.0000     0.03449985       1.0000000   
                     -    MCI_T+                0.124436245    0.13877170    414.0000     0.89669754       1.0000000   
                     -    DAT_T-               -0.184110901    0.17768098    414.0000    -1.03618799       1.0000000   
                     -    DAT_T+               -0.041071627    0.14707168    414.0000    -0.27926264       1.0000000   
   MCI_T-            -    MCI_T+                0.119726338    0.12405250    414.0000     0.96512639       1.0000000   
                     -    DAT_T-               -0.188820807    0.16667785    414.0000    -1.13284882       1.0000000   
                     -    DAT_T+               -0.045781533    0.13441357    414.0000    -0.34060202       1.0000000   
   MCI_T+            -    DAT_T-               -0.308547145    0.16791387    414.0000    -1.83753220       1.0000000   
                     -    DAT_T+               -0.165507871    0.13383410    414.0000    -1.23666439       1.0000000   
   DAT_T-            -    DAT_T+                0.143039274    0.17263401    414.0000     0.82856950       1.0000000   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(C3_NPX, na.rm = TRUE), Std=sd(C3_NPX, na.rm = TRUE),
            Max=max(C3_NPX, na.rm = TRUE), Min=min(C3_NPX, na.rm = TRUE))

5.7. FB_Diag+T

(FB_Diag_T_plot <- ggplot(DC_thesis_o,
                          aes(x = clinical_N_cat, y = Factor_B_NPX, 
                              colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor B (NPX)") +
    scale_y_continuous(breaks = seq(0, 5, by = 1), limits = c(0,5)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = Factor_B_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = Factor_B_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_B_NPX                                                                  
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F              p           
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        3.36507653      7     0.48072522     1.95893769    0.0593499   
   Age                   0.02160853      1     0.02160853     0.08805396    0.7668147   
   sex                   1.38135992      1     1.38135992     5.62899116    0.0181219   
   bmi                   5.05300243      1     5.05300243    20.59080017    0.0000075   
   E4_Positive           0.15916449      1     0.15916449     0.64858946    0.4210797   
   Residuals           101.59600344    414     0.24540097                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                -0.087992237    0.12676393    414.0000    -0.69414257       1.0000000   
                     -    SCD_T-                0.093223808    0.06834627    414.0000     1.36399268       1.0000000   
                     -    SCD_T+               -0.106365223    0.10834770    414.0000    -0.98170267       1.0000000   
                     -    MCI_T-               -0.115430209    0.09155745    414.0000    -1.26074069       1.0000000   
                     -    MCI_T+               -0.029858272    0.09578959    414.0000    -0.31170684       1.0000000   
                     -    DAT_T-               -0.168999214    0.13652909    414.0000    -1.23782571       1.0000000   
                     -    DAT_T+               -0.149441029    0.10791056    414.0000    -1.38486011       1.0000000   
   CN_T+             -    SCD_T-                0.181216045    0.12169432    414.0000     1.48910846       1.0000000   
                     -    SCD_T+               -0.018372986    0.14622501    414.0000    -0.12564872       1.0000000   
                     -    MCI_T-               -0.027437972    0.13622939    414.0000    -0.20141007       1.0000000   
                     -    MCI_T+                0.058133965    0.13761773    414.0000     0.42243079       1.0000000   
                     -    DAT_T-               -0.081006977    0.16821027    414.0000    -0.48158164       1.0000000   
                     -    DAT_T+               -0.061448792    0.14520069    414.0000    -0.42319903       1.0000000   
   SCD_T-            -    SCD_T+               -0.199589031    0.10029431    414.0000    -1.99003342       1.0000000   
                     -    MCI_T-               -0.208654016    0.08355029    414.0000    -2.49734633       0.3612013   
                     -    MCI_T+               -0.123082079    0.08729389    414.0000    -1.40997365       1.0000000   
                     -    DAT_T-               -0.262223022    0.12926612    414.0000    -2.02855187       1.0000000   
                     -    DAT_T+               -0.242664836    0.09815794    414.0000    -2.47218742       0.3872381   
   SCD_T+            -    MCI_T-               -0.009064986    0.11650375    414.0000    -0.07780853       1.0000000   
                     -    MCI_T+                0.076506951    0.11842566    414.0000     0.64603355       1.0000000   
                     -    DAT_T-               -0.062633991    0.15163025    414.0000    -0.41307056       1.0000000   
                     -    DAT_T+               -0.043075806    0.12550874    414.0000    -0.34320961       1.0000000   
   MCI_T-            -    MCI_T+                0.085571937    0.10586451    414.0000     0.80831558       1.0000000   
                     -    DAT_T-               -0.053569006    0.14224034    414.0000    -0.37660908       1.0000000   
                     -    DAT_T+               -0.034010820    0.11470650    414.0000    -0.29650300       1.0000000   
   MCI_T+            -    DAT_T-               -0.139140943    0.14329514    414.0000    -0.97100947       1.0000000   
                     -    DAT_T+               -0.119582757    0.11421199    414.0000    -1.04702455       1.0000000   
   DAT_T-            -    DAT_T+                0.019558186    0.14732324    414.0000     0.13275696       1.0000000   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(Factor_B_NPX, na.rm = TRUE), Std=sd(Factor_B_NPX, na.rm = TRUE),
            Max=max(Factor_B_NPX, na.rm = TRUE), Min=min(Factor_B_NPX, na.rm = TRUE))

5.8. FH_Diag+T

(FH_Diag_T_plot <- ggplot(DC_thesis_o,
                          aes(x = clinical_N_cat, y = Factor_H_NPX, 
                              colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor H (NPX)") +
    scale_y_continuous(breaks = seq(0, 5, by = 1), limits = c(0,5)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))



ancova(formula = Factor_H_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = Factor_H_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_H_NPX                                                                 
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p           
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        4.91475893      7     0.70210842     4.3029321    0.0001303   
   Age                   1.31662580      1     1.31662580     8.0690549    0.0047250   
   sex                   4.68372438      1     4.68372438    28.7046093    0.0000001   
   bmi                   1.91378467      1     1.91378467    11.7287946    0.0006768   
   E4_Positive           0.04179002      1     0.04179002     0.2561137    0.6130721   
   Residuals            67.55228292    414     0.16316977                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -0.16641392    0.10336592    414.0000    -1.60994959       1.0000000   
                     -    SCD_T-                 0.09003308    0.05573096    414.0000     1.61549498       1.0000000   
                     -    SCD_T+                -0.18165196    0.08834895    414.0000    -2.05607378       1.0000000   
                     -    MCI_T-                -0.03946015    0.07465784    414.0000    -0.52854658       1.0000000   
                     -    MCI_T+                -0.15546294    0.07810881    414.0000    -1.99033802       1.0000000   
                     -    DAT_T-                -0.02550874    0.11132864    414.0000    -0.22913006       1.0000000   
                     -    DAT_T+                -0.23634099    0.08799250    414.0000    -2.68592201       0.2106704   
   CN_T+             -    SCD_T-                 0.25644701    0.09923206    414.0000     2.58431599       0.2827633   
                     -    SCD_T+                -0.01523803    0.11923489    414.0000    -0.12779844       1.0000000   
                     -    MCI_T-                 0.12695378    0.11108426    414.0000     1.14286021       1.0000000   
                     -    MCI_T+                 0.01095099    0.11221634    414.0000     0.09758817       1.0000000   
                     -    DAT_T-                 0.14090519    0.13716213    414.0000     1.02728932       1.0000000   
                     -    DAT_T+                -0.06992706    0.11839964    414.0000    -0.59060198       1.0000000   
   SCD_T-            -    SCD_T+                -0.27168504    0.08178205    414.0000    -3.32206189       0.0272412   
                     -    MCI_T-                -0.12949323    0.06812863    414.0000    -1.90071664       1.0000000   
                     -    MCI_T+                -0.24549602    0.07118124    414.0000    -3.44888665       0.0173780   
                     -    DAT_T-                -0.11554182    0.10540626    414.0000    -1.09615709       1.0000000   
                     -    DAT_T+                -0.32637407    0.08004001    414.0000    -4.07763628       0.0015280   
   SCD_T+            -    MCI_T-                 0.14219181    0.09499957    414.0000     1.49676274       1.0000000   
                     -    MCI_T+                 0.02618902    0.09656673    414.0000     0.27120128       1.0000000   
                     -    DAT_T-                 0.15614322    0.12364244    414.0000     1.26286108       1.0000000   
                     -    DAT_T+                -0.05468903    0.10234242    414.0000    -0.53437305       1.0000000   
   MCI_T-            -    MCI_T+                -0.11600279    0.08632411    414.0000    -1.34380523       1.0000000   
                     -    DAT_T-                 0.01395141    0.11598571    414.0000     0.12028557       1.0000000   
                     -    DAT_T+                -0.19688084    0.09353404    414.0000    -2.10491102       1.0000000   
   MCI_T+            -    DAT_T-                 0.12995420    0.11684582    414.0000     1.11218527       1.0000000   
                     -    DAT_T+                -0.08087805    0.09313081    414.0000    -0.86843490       1.0000000   
   DAT_T-            -    DAT_T+                -0.21083225    0.12013041    414.0000    -1.75502813       1.0000000   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(Factor_H_NPX, na.rm = TRUE), Std=sd(Factor_H_NPX, na.rm = TRUE),
            Max=max(Factor_H_NPX, na.rm = TRUE), Min=min(Factor_H_NPX, na.rm = TRUE))

5.9. MIF_Diag+T

(MIF_Diag_T_plot <- ggplot(DC_thesis_o,
                           aes(x = clinical_N_cat, y = MIF_NPX, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "MIF (NPX)") +
    scale_y_continuous(breaks = seq(2, 8, by = 2), limits = c(2,8)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = MIF_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = MIF_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - MIF_NPX                                                                         
 ──────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F               p            
 ──────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat      22.725758494      7    3.246536928    17.207665026    < .0000001   
   Age                  6.207199746      1    6.207199746    32.900107516    < .0000001   
   sex                  0.695055305      1    0.695055305     3.684011343     0.0556236   
   bmi                  0.205320675      1    0.205320675     1.088264042     0.2974649   
   E4_Positive          0.001490990      1    0.001490990     0.007902716     0.9292066   
   Residuals           78.108580449    414    0.188668069                                 
 ──────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -0.45404715    0.11114930    414.0000    -4.0850202       0.0014820   
                     -    SCD_T-                 0.16876106    0.05992746    414.0000     2.8160891       0.1426216   
                     -    SCD_T+                -0.37750170    0.09500156    414.0000    -3.9736368       0.0023378   
                     -    MCI_T-                 0.12878756    0.08027952    414.0000     1.6042393       1.0000000   
                     -    MCI_T+                -0.41317630    0.08399035    414.0000    -4.9193306       0.0000351   
                     -    DAT_T-                 0.19426132    0.11971160    414.0000     1.6227443       1.0000000   
                     -    DAT_T+                -0.31889956    0.09461827    414.0000    -3.3703804       0.0229908   
   CN_T+             -    SCD_T-                 0.62280821    0.10670417    414.0000     5.8367750       0.0000003   
                     -    SCD_T+                 0.07654544    0.12821319    414.0000     0.5970169       1.0000000   
                     -    MCI_T-                 0.58283471    0.11944882    414.0000     4.8793675       0.0000426   
                     -    MCI_T+                 0.04087085    0.12066615    414.0000     0.3387102       1.0000000   
                     -    DAT_T-                 0.64830847    0.14749034    414.0000     4.3955996       0.0003936   
                     -    DAT_T+                 0.13514759    0.12731505    414.0000     1.0615209       1.0000000   
   SCD_T-            -    SCD_T+                -0.54626276    0.08794018    414.0000    -6.2117539    < .0000001   
                     -    MCI_T-                -0.03997350    0.07325867    414.0000    -0.5456487       1.0000000   
                     -    MCI_T+                -0.58193736    0.07654113    414.0000    -7.6029363    < .0000001   
                     -    DAT_T-                 0.02550026    0.11334328    414.0000     0.2249826       1.0000000   
                     -    DAT_T+                -0.48766062    0.08606697    414.0000    -5.6660600       0.0000008   
   SCD_T+            -    MCI_T-                 0.50628927    0.10215297    414.0000     4.9561876       0.0000294   
                     -    MCI_T+                -0.03567459    0.10383814    414.0000    -0.3435597       1.0000000   
                     -    DAT_T-                 0.57176303    0.13295262    414.0000     4.3005021       0.0005958   
                     -    DAT_T+                 0.05860214    0.11004873    414.0000     0.5325109       1.0000000   
   MCI_T-            -    MCI_T+                -0.54196386    0.09282425    414.0000    -5.8386018       0.0000003   
                     -    DAT_T-                 0.06547376    0.12471935    414.0000     0.5249687       1.0000000   
                     -    DAT_T+                -0.44768712    0.10057709    414.0000    -4.4511838       0.0003079   
   MCI_T+            -    DAT_T-                 0.60743762    0.12564423    414.0000     4.8345844       0.0000527   
                     -    DAT_T+                 0.09427674    0.10014350    414.0000     0.9414165       1.0000000   
   DAT_T-            -    DAT_T+                -0.51316088    0.12917614    414.0000    -3.9725670       0.0023480   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(MIF_NPX, na.rm = TRUE), Std=sd(MIF_NPX, na.rm = TRUE),
            Max=max(MIF_NPX, na.rm = TRUE), Min=min(MIF_NPX, na.rm = TRUE))

5.10. TNFR1_Diag+T

(TNFR1_Diag_T_plot <- ggplot(DC_thesis_o,
                             aes(x = clinical_N_cat, y = TNFR1_NPX, 
                                 colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR1 (NPX)") +
    scale_y_continuous(breaks = seq(1, 6, by = 1), limits = c(1,6)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR1_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TNFR1_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR1_NPX                                                                      
 ─────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F              p            
 ─────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       9.149195430      7    1.307027919    11.06251382    < .0000001   
   Age                  3.100448919      1    3.100448919    26.24179524     0.0000005   
   sex                  0.705644882      1    0.705644882     5.97248624     0.0149473   
   bmi                  0.002840716      1    0.002840716     0.02404345     0.8768500   
   E4_Positive          0.099107499      1    0.099107499     0.83883294     0.3602639   
   Residuals           48.913797276    414    0.118149269                                
 ─────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -0.26839595    0.08795754    414.0000    -3.0514264       0.0678774   
                     -    SCD_T-                 0.11067966    0.04742334    414.0000     2.3338646       0.5622553   
                     -    SCD_T+                -0.29691961    0.07517909    414.0000    -3.9494973       0.0025770   
                     -    MCI_T-                 0.08298194    0.06352886    414.0000     1.3062084       1.0000000   
                     -    MCI_T+                -0.22451994    0.06646541    414.0000    -3.3779966       0.0223801   
                     -    DAT_T-                 0.18219393    0.09473328    414.0000     1.9232305       1.0000000   
                     -    DAT_T+                -0.15183189    0.07487577    414.0000    -2.0277839       1.0000000   
   CN_T+             -    SCD_T-                 0.37907561    0.08443990    414.0000     4.4892951       0.0002597   
                     -    SCD_T+                -0.02852366    0.10146098    414.0000    -0.2811294       1.0000000   
                     -    MCI_T-                 0.35137789    0.09452533    414.0000     3.7172882       0.0064138   
                     -    MCI_T+                 0.04387602    0.09548865    414.0000     0.4594893       1.0000000   
                     -    DAT_T-                 0.45058988    0.11671586    414.0000     3.8605710       0.0036738   
                     -    DAT_T+                 0.11656406    0.10075023    414.0000     1.1569607       1.0000000   
   SCD_T-            -    SCD_T+                -0.40759927    0.06959110    414.0000    -5.8570607       0.0000003   
                     -    MCI_T-                -0.02769772    0.05797294    414.0000    -0.4777698       1.0000000   
                     -    MCI_T+                -0.33519960    0.06057051    414.0000    -5.5340399       0.0000016   
                     -    DAT_T-                 0.07151426    0.08969373    414.0000     0.7973162       1.0000000   
                     -    DAT_T+                -0.26251155    0.06810874    414.0000    -3.8543006       0.0037658   
   SCD_T+            -    MCI_T-                 0.37990155    0.08083832    414.0000     4.6995228       0.0000996   
                     -    MCI_T+                 0.07239967    0.08217188    414.0000     0.8810761       1.0000000   
                     -    DAT_T-                 0.47911354    0.10521150    414.0000     4.5538133       0.0001943   
                     -    DAT_T+                 0.14508772    0.08708660    414.0000     1.6660166       1.0000000   
   MCI_T-            -    MCI_T+                -0.30750187    0.07345609    414.0000    -4.1862001       0.0009708   
                     -    DAT_T-                 0.09921199    0.09869614    414.0000     1.0052266       1.0000000   
                     -    DAT_T+                -0.23481383    0.07959126    414.0000    -2.9502463       0.0939531   
   MCI_T+            -    DAT_T-                 0.40671386    0.09942803    414.0000     4.0905351       0.0014486   
                     -    DAT_T+                 0.07268805    0.07924814    414.0000     0.9172209       1.0000000   
   DAT_T-            -    DAT_T+                -0.33402581    0.10222300    414.0000    -3.2676189       0.0328996   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(TNFR1_NPX, na.rm = TRUE), Std=sd(TNFR1_NPX, na.rm = TRUE),
            Max=max(TNFR1_NPX, na.rm = TRUE), Min=min(TNFR1_NPX, na.rm = TRUE))

5.11. TNFR2_Diag+T

(TNFR2_Diag_T_plot <- ggplot(DC_thesis_o,
                             aes(x = clinical_N_cat, y = TNFR2_NPX, 
                                 colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR2 (NPX)") +
    scale_y_continuous(breaks = seq(-1, 4, by = 1), limits = c(-1,4)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))


ancova(formula = TNFR2_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = TNFR2_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR2_NPX                                                                      
 ─────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F              p            
 ─────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       11.39064174      7     1.62723453     12.0882387    < .0000001   
   Age                   6.32233279      1     6.32233279     46.9667197    < .0000001   
   sex                   1.85440798      1     1.85440798     13.7758423     0.0002341   
   bmi                  1.267309e-6      1    1.267309e-6    9.414456e-6     0.9975533   
   E4_Positive           0.03407541      1     0.03407541      0.2531360     0.6151431   
   Residuals            55.72979748    414     0.13461304                                
 ─────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                 -0.31061888    0.09388606    414.0000    -3.30846658       0.0285626   
                     -    SCD_T-                 0.10288733    0.05061978    414.0000     2.03255203       1.0000000   
                     -    SCD_T+                -0.33082091    0.08024632    414.0000    -4.12256823       0.0012680   
                     -    MCI_T-                 0.06834490    0.06781084    414.0000     1.00787564       1.0000000   
                     -    MCI_T+                -0.29450195    0.07094532    414.0000    -4.15111178       0.0011253   
                     -    DAT_T-                 0.07867033    0.10111850    414.0000     0.77800135       1.0000000   
                     -    DAT_T+                -0.25378164    0.07992256    414.0000    -3.17534445       0.0450381   
   CN_T+             -    SCD_T-                 0.41350621    0.09013132    414.0000     4.58781927       0.0001665   
                     -    SCD_T+                -0.02020203    0.10829966    414.0000    -0.18653826       1.0000000   
                     -    MCI_T-                 0.37896378    0.10089653    414.0000     3.75596437       0.0055276   
                     -    MCI_T+                 0.01611693    0.10192479    414.0000     0.15812575       1.0000000   
                     -    DAT_T-                 0.38928921    0.12458275    414.0000     3.12474398       0.0533358   
                     -    DAT_T+                 0.05683724    0.10754101    414.0000     0.52851690       1.0000000   
   SCD_T-            -    SCD_T+                -0.43370824    0.07428168    414.0000    -5.83869721       0.0000003   
                     -    MCI_T-                -0.03454243    0.06188044    414.0000    -0.55821246       1.0000000   
                     -    MCI_T+                -0.39738928    0.06465308    414.0000    -6.14648599    < .0000001   
                     -    DAT_T-                -0.02421700    0.09573927    414.0000    -0.25294741       1.0000000   
                     -    DAT_T+                -0.35666897    0.07269941    414.0000    -4.90607804       0.0000375   
   SCD_T+            -    MCI_T-                 0.39916581    0.08628699    414.0000     4.62602517       0.0001398   
                     -    MCI_T+                 0.03631896    0.08771043    414.0000     0.41407804       1.0000000   
                     -    DAT_T-                 0.40949124    0.11230298    414.0000     3.64630798       0.0083983   
                     -    DAT_T+                 0.07703927    0.09295642    414.0000     0.82876761       1.0000000   
   MCI_T-            -    MCI_T+                -0.36284684    0.07840718    414.0000    -4.62772475       0.0001387   
                     -    DAT_T-                 0.01032543    0.10534847    414.0000     0.09801217       1.0000000   
                     -    DAT_T+                -0.32212654    0.08495588    414.0000    -3.79169220       0.0048127   
   MCI_T+            -    DAT_T-                 0.37317228    0.10612969    414.0000     3.51619114       0.0136132   
                     -    DAT_T+                 0.04072031    0.08458963    414.0000     0.48138651       1.0000000   
   DAT_T-            -    DAT_T+                -0.33245197    0.10911305    414.0000    -3.04685815       0.0688942   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(TNFR2_NPX, na.rm = TRUE), Std=sd(TNFR2_NPX, na.rm = TRUE),
            Max=max(TNFR2_NPX, na.rm = TRUE), Min=min(TNFR2_NPX, na.rm = TRUE))

5.12. ICAM1_Diag+T

(ICAM1_Diag_T_plot <- ggplot(DC_thesis_o,
                             aes(x = clinical_N_cat, y = ICAM1_NPX, 
                                 colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "ICAM1 (NPX)") +
    scale_y_continuous(breaks = seq(-6,-1, by = 1), limits = c(-6, -1)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))

ancova(formula = ICAM1_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = ICAM1_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - ICAM1_NPX                                                                   
 ──────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p           
 ──────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        5.77599441      7     0.82514206    5.4012248    0.0000061   
   Age                   1.49814382      1     1.49814382    9.8065679    0.0018623   
   sex                   1.15535612      1     1.15535612    7.5627440    0.0062199   
   bmi                   0.60163276      1     0.60163276    3.9381750    0.0478617   
   E4_Positive           0.02363033      1     0.02363033    0.1546797    0.6943053   
   Residuals            63.24654548    414     0.15276943                             
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                -0.200895776    0.10001745    414.0000    -2.00860728       1.0000000   
                     -    SCD_T-                0.046712387    0.05392559    414.0000     0.86623788       1.0000000   
                     -    SCD_T+               -0.265283012    0.08548694    414.0000    -3.10319927       0.0572791   
                     -    MCI_T-               -0.116199411    0.07223935    414.0000    -1.60853355       1.0000000   
                     -    MCI_T+               -0.197279340    0.07557853    414.0000    -2.61025652       0.2625179   
                     -    DAT_T-               -0.090095240    0.10772222    414.0000    -0.83636638       1.0000000   
                     -    DAT_T+               -0.297782969    0.08514204    414.0000    -3.49748469       0.0145748   
   CN_T+             -    SCD_T-                0.247608163    0.09601750    414.0000     2.57878153       0.2872592   
                     -    SCD_T+               -0.064387236    0.11537235    414.0000    -0.55808201       1.0000000   
                     -    MCI_T-                0.084696365    0.10748575    414.0000     0.78797758       1.0000000   
                     -    MCI_T+                0.003616436    0.10858116    414.0000     0.03330630       1.0000000   
                     -    DAT_T-                0.110800537    0.13271885    414.0000     0.83485156       1.0000000   
                     -    DAT_T+               -0.096887193    0.11456416    414.0000    -0.84570248       1.0000000   
   SCD_T-            -    SCD_T+               -0.311995399    0.07913277    414.0000    -3.94268242       0.0026486   
                     -    MCI_T-               -0.162911798    0.06592165    414.0000    -2.47129432       0.3881922   
                     -    MCI_T+               -0.243991727    0.06887537    414.0000    -3.54251078       0.0123605   
                     -    DAT_T-               -0.136807627    0.10199169    414.0000    -1.34136050       1.0000000   
                     -    DAT_T+               -0.344495356    0.07744717    414.0000    -4.44813360       0.0003121   
   SCD_T+            -    MCI_T-                0.149083601    0.09192212    414.0000     1.62184692       1.0000000   
                     -    MCI_T+                0.068003672    0.09343851    414.0000     0.72779061       1.0000000   
                     -    DAT_T-                0.175187772    0.11963712    414.0000     1.46432626       1.0000000   
                     -    DAT_T+               -0.032499957    0.09902710    414.0000    -0.32819256       1.0000000   
   MCI_T-            -    MCI_T+               -0.081079929    0.08352770    414.0000    -0.97069514       1.0000000   
                     -    DAT_T-                0.026104172    0.11222843    414.0000     0.23259856       1.0000000   
                     -    DAT_T+               -0.181583558    0.09050407    414.0000    -2.00635796       1.0000000   
   MCI_T+            -    DAT_T-                0.107184100    0.11306067    414.0000     0.94802284       1.0000000   
                     -    DAT_T+               -0.100503629    0.09011390    414.0000    -1.11529551       1.0000000   
   DAT_T-            -    DAT_T+               -0.207687730    0.11623886    414.0000    -1.78673231       1.0000000   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(ICAM1_NPX, na.rm = TRUE), Std=sd(ICAM1_NPX, na.rm = TRUE),
            Max=max(ICAM1_NPX, na.rm = TRUE), Min=min(ICAM1_NPX, na.rm = TRUE))

5.13. VCAM1_Diag+T

(VCAM1_Diag_T_plot <- ggplot(DC_thesis_o,
                             aes(x = clinical_N_cat, y = VCAM1_NPX, 
                                 colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "VCAM1 (NPX)") +
    scale_y_continuous(breaks = seq(-3,1, by = 1), limits = c(-3, 1)) +
    scale_colour_manual(values = c("black",'black', "black", "black", 
                                   "black", "black","black", 'black')) +
    scale_fill_manual(values = c("honeydew3",'bisque2', "lightblue", "darkorange3", 
                                 "lightgreen", "coral","aquamarine2", 'deeppink')) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))

ancova(formula = VCAM1_NPX ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = DC_thesis_o,
       postHoc = VCAM1_NPX ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - VCAM1_NPX                                                                    
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p           
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        5.33952762      7     0.76278966     6.5941411    0.0000002   
   Age                   2.48870078      1     2.48870078    21.5142457    0.0000047   
   sex                   2.97344854      1     2.97344854    25.7047786    0.0000006   
   bmi                   0.14679053      1     0.14679053     1.2689703    0.2606125   
   E4_Positive           0.03388809      1     0.03388809     0.2929547    0.5886244   
   Residuals            47.89022763    414     0.11567688                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   CN_T-             -    CN_T+                -0.224082797    0.08703237    414.0000    -2.57470631       0.2906104   
                     -    SCD_T-                0.049693970    0.04692453    414.0000     1.05901900       1.0000000   
                     -    SCD_T+               -0.287811852    0.07438833    414.0000    -3.86904564       0.0035527   
                     -    MCI_T-               -0.024219452    0.06286065    414.0000    -0.38528798       1.0000000   
                     -    MCI_T+               -0.170015759    0.06576631    414.0000    -2.58514981       0.2820914   
                     -    DAT_T-                0.052503278    0.09373684    414.0000     0.56011357       1.0000000   
                     -    DAT_T+               -0.219850841    0.07408821    414.0000    -2.96742022       0.0889647   
   CN_T+             -    SCD_T-                0.273776766    0.08355173    414.0000     3.27673361       0.0318820   
                     -    SCD_T+               -0.063729055    0.10039378    414.0000    -0.63479088       1.0000000   
                     -    MCI_T-                0.199863345    0.09353108    414.0000     2.13686555       0.9294455   
                     -    MCI_T+                0.054067037    0.09448427    414.0000     0.57223319       1.0000000   
                     -    DAT_T-                0.276586075    0.11548821    414.0000     2.39492913       0.4778819   
                     -    DAT_T+                0.004231955    0.09969051    414.0000     0.04245094       1.0000000   
   SCD_T-            -    SCD_T+               -0.337505821    0.06885912    414.0000    -4.90139642       0.0000383   
                     -    MCI_T-               -0.073913421    0.05736317    414.0000    -1.28851712       1.0000000   
                     -    MCI_T+               -0.219709729    0.05993341    414.0000    -3.66589753       0.0077995   
                     -    DAT_T-                0.002809309    0.08875030    414.0000     0.03165407       1.0000000   
                     -    DAT_T+               -0.269544811    0.06739235    414.0000    -3.99963518       0.0021038   
   SCD_T+            -    MCI_T-                0.263592400    0.07998804    414.0000     3.29539763       0.0298887   
                     -    MCI_T+                0.117796093    0.08130757    414.0000     1.44877160       1.0000000   
                     -    DAT_T-                0.340315130    0.10410486    414.0000     3.26896502       0.0327474   
                     -    DAT_T+                0.067961011    0.08617060    414.0000     0.78867981       1.0000000   
   MCI_T-            -    MCI_T+               -0.145796307    0.07268345    414.0000    -2.00590784       1.0000000   
                     -    DAT_T-                0.076722730    0.09765802    414.0000     0.78562648       1.0000000   
                     -    DAT_T+               -0.195631389    0.07875410    414.0000    -2.48407893       0.3747312   
   MCI_T+            -    DAT_T-                0.222519037    0.09838222    414.0000     2.26178103       0.6784082   
                     -    DAT_T+               -0.049835082    0.07841458    414.0000    -0.63553334       1.0000000   
   DAT_T-            -    DAT_T+               -0.272354119    0.10114779    414.0000    -2.69263542       0.2065483   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
DC_thesis_o%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(VCAM1_NPX, na.rm = TRUE), Std=sd(VCAM1_NPX, na.rm = TRUE),
            Max=max(VCAM1_NPX, na.rm = TRUE), Min=min(VCAM1_NPX, na.rm = TRUE))
NA
LS0tCnRpdGxlOiAiREVMQ09ERV9BbmFseXNpc19PbGluayBvbmx5IgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCiMgMS4gTG9hZCBhbGwgbGlicmFyaWVzIHJlcXVpcmVkCmBgYHtyfQpsaWJyYXJ5KHJlYWR4bCkKbGlicmFyeSh0aWR5dmVyc2UpCgoKbGlicmFyeSgnZHBseXInKQpsaWJyYXJ5KCdyZWFkeGwnKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZHBseXIpICMgcmVxdWlyZWQgYnkgY3VzdG9tIGZ1bmN0aW9uIG91dGxpZXJfcmVtb3ZhbCgpCmxpYnJhcnkoam12KSAjIGFuY292YSgpCmxpYnJhcnkoZ2dwbG90MikgIyBnZ3Bsb3QoKQpsaWJyYXJ5KGdyaWRFeHRyYSkgIyBncmlkLmFycmFuZ2UoKQoKb2xpbmtfZGVsY29kZTwtIHJlYWRfZXhjZWwoJ0RFTENPREVfb2xpbmtvbmx5Lnhsc3gnKQpvbGlua19kZWxjb2RlIDwtIGRhdGEuZnJhbWUob2xpbmtfZGVsY29kZSkKYGBgCiMgMi4gUHJlIGFuYWx5c2lzOiBEYXRhIGltcG9ydCBhbmQgY2xlYW5pbmcKYGBge3J9CmNvbG5hbWVzKG9saW5rX2RlbGNvZGUpCkRDX3RoZXNpc19vbGluayA8LSBzdWJzZXQob2xpbmtfZGVsY29kZSwgc2VsZWN0ID0gYyhCYXJjb2RlX0NTRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZS0w0MF9OUFgsIEFYTF9OUFgsIFRZUk8zX05QWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkVNMl9OUFgsIEMxcV9OUFgsIEMzX05QWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWN0b3JfQl9OUFgsIEZhY3Rvcl9IX05QWCwgTUlGX05QWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTkZSMV9OUFgsIFRORlIyX05QWCwgSUNBTTFfTlBYLCBWQ0FNMV9OUFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdlLCBzZXgsIGJtaSwgRTRfUG9zaXRpdmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBybWRpYWcsIEFCX1JhdGlvX1BhdGhvLCB0VGF1X1BhdGhvLCBBVCwgQU4pKQoKRENfdGhlc2lzX29saW5rJEFfTl9jYXQgPC0gZmFjdG9yKGlmZWxzZShEQ190aGVzaXNfb2xpbmskQU4gPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkEtVC0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoRENfdGhlc2lzX29saW5rJEFOID09IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQStULSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoRENfdGhlc2lzX29saW5rJEFOID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkEtVCsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBK1QrIikpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJBLVQtIiwgIkEtVCsiLCAiQStULSIsICJBK1QrIikpCnRhYmxlKERDX3RoZXNpc19vbGluayRBX05fY2F0KQoKRENfdGhlc2lzX29saW5rJERpYWcgPC0gZmFjdG9yKGlmZWxzZShEQ190aGVzaXNfb2xpbmskcHJtZGlhZyA9PSAwIHwgRENfdGhlc2lzX29saW5rJHBybWRpYWcgPT0gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ04iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoRENfdGhlc2lzX29saW5rJHBybWRpYWcgPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTQ0QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19vbGluayRwcm1kaWFnID09IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1DSSIsICJEQVQiKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoJ0NOJywiU0NEIiwgIk1DSSIsICJEQVQiKSkKdGFibGUoRENfdGhlc2lzX29saW5rJERpYWcpCgoKRENfdGhlc2lzX29saW5rJGNsaW5pY2FsX05fY2F0IDwtIGZhY3RvcihpZmVsc2UoRENfdGhlc2lzX29saW5rJERpYWcgPT0gIkNOIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERDX3RoZXNpc19vbGluayR0VGF1X1BhdGhvID09IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ05fVC0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19vbGluayREaWFnID09ICJDTiIgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERDX3RoZXNpc19vbGluayR0VGF1X1BhdGhvID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNOX1QrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoRENfdGhlc2lzX29saW5rJERpYWcgPT0gIlNDRCIgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ190aGVzaXNfb2xpbmskdFRhdV9QYXRobyA9PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0NEX1QtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19vbGluayREaWFnID09ICJTQ0QiICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERDX3RoZXNpc19vbGluayR0VGF1X1BhdGhvID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0NEX1QrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShEQ190aGVzaXNfb2xpbmskRGlhZyA9PSAiTUNJIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRENfdGhlc2lzX29saW5rJHRUYXVfUGF0aG8gPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUNJX1QtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoRENfdGhlc2lzX29saW5rJERpYWcgPT0gIk1DSSIgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQ190aGVzaXNfb2xpbmskdFRhdV9QYXRobyA9PSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUNJX1QrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKERDX3RoZXNpc19vbGluayREaWFnID09ICJEQVQiICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERDX3RoZXNpc19vbGluayR0VGF1X1BhdGhvID09IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREFUX1QtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShEQ190aGVzaXNfb2xpbmskRGlhZyA9PSAiREFUIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRENfdGhlc2lzX29saW5rJHRUYXVfUGF0aG8gPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiREFUX1QrIiwgJ290aGVycycpKSkpKSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygnQ05fVC0nLCJDTl9UKyIsICdTQ0RfVC0nLCAnU0NEX1QrJywgIk1DSV9ULSIsICJNQ0lfVCsiLCJEQVRfVC0iLCAiREFUX1QrIikpCnRhYmxlKERDX3RoZXNpc19vbGluayRjbGluaWNhbF9OX2NhdCkKYGBgCgpPdXRsaWVyIHJlbW92YWwgZnVuY3Rpb24KSGlnaGVyIHRoYW4gb3IgbGVzcyB0aGFuIDMgc3RhbmRhcmQgZGV2aWF0aW9ucwpgYGB7cn0Kb3V0bGllcl9yZW1vdmFsIDwtIGZ1bmN0aW9uKGRmKSB7CiAgZmluZC5vdXRsaWVyIDwtIGZ1bmN0aW9uKGRmKSB7CiAgICBpZighaXMubnVtZXJpYyhkZikpIHsKICAgICAgZGYKICAgIH0KICAgIGVsc2UgewogICAgICBhcml0aC5tZWFuIDwtIG1lYW4oZGYsIG5hLnJtID0gVFJVRSkKICAgICAgc3QuZGV2IDwtIHNkKGRmLCBuYS5ybSA9IFRSVUUpCiAgICAgIGRmW3doaWNoKGRmID4gKGFyaXRoLm1lYW4gKyAzKnN0LmRldikgfCBkZiA8IChhcml0aC5tZWFuIC0gMypzdC5kZXYpKV0gPC0gTkEKICAgICAgZGYKICAgIH0KICB9CiAgZGYgJT4lIGRwbHlyOjptdXRhdGVfYWxsKGZpbmQub3V0bGllcikKfQpgYGAKCgpSZW1vdmVkIG91dGxpZXJzCgpgYGB7cn0KRENfdGhlc2lzX29saW5rX2NsZWFuIDwtIG91dGxpZXJfcmVtb3ZhbChEQ190aGVzaXNfb2xpbmtbMToxNF0pCgpkaW0oRENfdGhlc2lzX29saW5rX2NsZWFuKQpgYGAKQ2hlY2sgZm9yIG1lcmdlIG91dGxpZXIgcmVtb3ZlZCBjb2x1bW5zCmBgYHtyfQpEQ190aGVzaXNfbyA8LSBtZXJnZShEQ190aGVzaXNfb2xpbmtfY2xlYW4sCiAgICAgICAgICAgICAgICAgICAgIERDX3RoZXNpc19vbGlua1tjKDEsIDE1Om5jb2woRENfdGhlc2lzX29saW5rKSldLAogICAgICAgICAgICAgICAgICAgICBieSA9ICJCYXJjb2RlX0NTRiIpCmRpbShEQ190aGVzaXNfbykKCkRDX3RoZXNpc19vIDwtIG5hLm9taXQoRENfdGhlc2lzX28pCmBgYAoKYGBge3J9CnRhYmxlKERDX3RoZXNpc19vJEFfTl9jYXQpCnRhYmxlKERDX3RoZXNpc19vJERpYWcpCnRhYmxlKERDX3RoZXNpc19vJGNsaW5pY2FsX05fY2F0KQpgYGAKCk1ha2luZyBCTUkgYXMgY2hhcmFjdGVyCmBgYHtyfQpEQ190aGVzaXNfbyRibWkgPC0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoRENfdGhlc2lzX28kYm1pKSkgCmBgYAoKCmBgYHtyfQpjb2xuYW1lcyhEQ190aGVzaXNfbykKYGBgCgojIDMuIEFUIHNjaGVtZQojIyAzLjEuIFlLTDQwX0FUCmBgYHtyfQooWUtMNDBfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19vLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IFlLTDQwX05QWCAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIllLTDQwIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgzLDksIGJ5ID0gMSksIGxpbWl0cyA9IGMoMyw5KSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBZS0w0MF9OUFggfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBZS0w0MF9OUFggfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFlLTDQwX05QWCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFlLTDQwX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChZS0w0MF9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oWUtMNDBfTlBYLCBuYS5ybSA9IFRSVUUpKQoKYGBgCiMjIDMuMi4gQXhsX0FUCmBgYHtyfQooQVhMX0FfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gQVhMX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkFYTCAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgNSwgYnkgPSAxKSwgbGltaXRzID0gYygwLDUpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEFYTF9OUFggfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBBWExfTlBYIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihBWExfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQVhMX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChBWExfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEFYTF9OUFgsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgMy4zLiBUeXJvM19BVApgYGB7cn0KKFR5cm8zX0FfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBUWVJPM19OUFgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlR5cm8zIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgyLCA2LCBieSA9IDEpLCBsaW1pdHMgPSBjKDIsNikpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCgphbmNvdmEoZm9ybXVsYSA9IFRZUk8zX05QWCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IFRZUk8zX05QWCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVFlSTzNfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVFlSTzNfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRZUk8zX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihUWVJPM19OUFgsIG5hLnJtID0gVFJVRSkpCmBgYAoKCiMjIDMuNC4gVFJFTTJfQVQKYGBge3J9CihUUkVNMl9BX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gVFJFTTJfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUUkVNMiAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgOCwgYnkgPSAxKSwgbGltaXRzID0gYygwLDgpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IFRSRU0yX05QWCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IFRSRU0yX05QWCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVFJFTTJfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVFJFTTJfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRSRU0yX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihUUkVNMl9OUFgsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgMy41LiBDMXFfQVQKYGBge3J9CihDMXFfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19vLAogICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBDMXFfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQzFxIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtNCwgMSwgYnkgPSAxKSwgbGltaXRzID0gYygtNCwxKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBDMXFfTlBYIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gQzFxX05QWCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQzFxX05QWCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEMxcV9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzFxX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDMXFfTlBYLCBuYS5ybSA9IFRSVUUpKQoKYGBgCgojIyAzLjYuIEMzX0FUCmBgYHtyfQooQzNfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19vLAogICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IEMzX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQzMgKE5QWCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0yLjUsIDUsIGJ5ID0gMi41KSwgbGltaXRzID0gYygtMi41LDUpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEMzX05QWCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IEMzX05QWCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQzNfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzNfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEMzX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDM19OUFgsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDMuNy4gRkJfQVQKYGBge3J9CihGQl9BX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gRmFjdG9yX0JfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJGYWN0b3IgQiAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgNSwgYnkgPSAxKSwgbGltaXRzID0gYygwLDUpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEZhY3Rvcl9CX05QWCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IEZhY3Rvcl9CX05QWCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oRmFjdG9yX0JfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoRmFjdG9yX0JfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEZhY3Rvcl9CX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihGYWN0b3JfQl9OUFgsIG5hLnJtID0gVFJVRSkpCmBgYAoKCiMjIDMuOC4gRkhfQVQKYGBge3J9CihGSF9BX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gRmFjdG9yX0hfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJGYWN0b3IgSCAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgNSwgYnkgPSAxKSwgbGltaXRzID0gYygwLDUpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEZhY3Rvcl9IX05QWCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IEZhY3Rvcl9IX05QWCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oRmFjdG9yX0hfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoRmFjdG9yX0hfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEZhY3Rvcl9IX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihGYWN0b3JfSF9OUFgsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgMy45LiBNSUZfQVQKYGBge3J9CihNSUZfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19vLAogICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBNSUZfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiTUlGIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgyLCA4LCBieSA9IDIpLCBsaW1pdHMgPSBjKDIsOCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gTUlGX05QWCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IE1JRl9OUFggfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKE1JRl9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChNSUZfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KE1JRl9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oTUlGX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyAzLjEwLiBUTkZSMV9BVApgYGB7cn0KKFRORlIxX0FfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBUTkZSMV9OUFgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRORlIxIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA2LCBieSA9IDIpLCBsaW1pdHMgPSBjKDAsNikpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVE5GUjFfTlBYIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gVE5GUjFfTlBYIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUTkZSMV9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChUTkZSMV9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVE5GUjFfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRORlIxX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyAzLjExLiBUTkZSMl9BVApgYGB7cn0KKFRORlIyX0FfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBUTkZSMl9OUFgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRORlIyIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMSwgNCwgYnkgPSAxKSwgbGltaXRzID0gYygtMSw0KSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUTkZSMl9OUFggfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBUTkZSMl9OUFggfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFRORlIyX05QWCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRORlIyX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChUTkZSMl9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVE5GUjJfTlBYLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDMuMTIuIElDQU0xX0FUCmBgYHtyfQooSUNBTTFfQV9UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19vLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IElDQU0xX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiSUNBTTEgKE5QWCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC02LDAsIGJ5ID0gMSksIGxpbWl0cyA9IGMoLTYsIDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IElDQU0xX05QWCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IElDQU0xX05QWCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oSUNBTTFfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoSUNBTTFfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KElDQU0xX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihJQ0FNMV9OUFgsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgMy4xMy4gVkNBTTFfQVQKYGBge3J9CihWQ0FNMV9BX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gVkNBTTFfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJWQ0FNMSAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoLTQsMSwgYnkgPSAxKSwgbGltaXRzID0gYygtNCwgMSkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVkNBTTFfTlBYIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gVkNBTTFfTlBYIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihWQ0FNMV9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChWQ0FNMV9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVkNBTTFfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFZDQU0xX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIDQuIERpYWdub3NpcyBzY2hlbWUKIyMgNC4xLiBZS0w0MF9EaWFnCmBgYHtyfQooWUtMNDBfZGlhZ19wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gWUtMNDBfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICBnZW9tX2JveHBsb3QoKSArCiAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiWUtMNDAgKE5QWEwpIikgKwogICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDMsOSwgYnkgPSAxKSwgbGltaXRzID0gYygzLDkpKSArCiAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArIAogICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiLCAic3ByaW5nZ3JlZW40IikpICsKICAgdGhlbWVfYncoKSArCiAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBZS0w0MF9OUFggfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBZS0w0MF9OUFggfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFlLTDQwX05QWCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFlLTDQwX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChZS0w0MF9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oWUtMNDBfTlBYLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuMi4gQXhsX0RpYWcKYGBge3J9CihBWExfZGlhZ19wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IEFYTF9OUFgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQVhMIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA1LCBieSA9IDEpLCBsaW1pdHMgPSBjKDAsNSkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArIAogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwiaW5kaWFucmVkMSIsICIjMWNhOWM5IiwgInNwcmluZ2dyZWVuNCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEFYTF9OUFggfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBBWExfTlBYIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEFYTF9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChBWExfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEFYTF9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQVhMX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA0LjMuIFR5cm8zX0RpYWcKYGBge3J9CihUeXJvM19EaWFnX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19vLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IERpYWcsIHkgPSBUWVJPM19OUFgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gRGlhZywgZmlsbCA9IERpYWcpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUeXJvMyAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMiwgNiwgYnkgPSAxKSwgbGltaXRzID0gYygyLDYpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKyAKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUWVJPM19OUFggfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBUWVJPM19OUFggfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoRGlhZyklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVFlSTzNfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVFlSTzNfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRZUk8zX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihUWVJPM19OUFgsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDQuNC4gVFJFTTJfRGlhZwpgYGB7cn0KKFRSRU0yX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IFRSRU0yX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRSRU0yIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA3LCBieSA9IDEpLCBsaW1pdHMgPSBjKDAsNykpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiLCAic3ByaW5nZ3JlZW40IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVFJFTTJfTlBYIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gVFJFTTJfTlBYIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFRSRU0yX05QWCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRSRU0yX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChUUkVNMl9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVFJFTTJfTlBYLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuNS4gQzFxX0RpYWcKYGBge3J9CihDMXFfRGlhZ19wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IEMxcV9OUFgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQzFxIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtNCwgMSwgYnkgPSAxKSwgbGltaXRzID0gYygtNCwxKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBDMXFfTlBYIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gQzFxX05QWCB+IERpYWcsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoRGlhZyklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQzFxX05QWCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEMxcV9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzFxX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDMXFfTlBYLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuNi4gQzNfRGlhZwpgYGB7cn0KKEMzX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IEMzX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkMzIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMi41LCA1LCBieSA9IDIuNSksIGxpbWl0cyA9IGMoLTIuNSw1KSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBDM19OUFggfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBDM19OUFggfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEMzX05QWCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEMzX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChDM19OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQzNfTlBYLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuNy4gRkJfRGlhZwpgYGB7cn0KKEZCX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IEZhY3Rvcl9CX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkZhY3RvciBCIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA1LCBieSA9IDEpLCBsaW1pdHMgPSBjKDAsNSkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiLCAic3ByaW5nZ3JlZW40IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gRmFjdG9yX0JfTlBYIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gRmFjdG9yX0JfTlBYIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihGYWN0b3JfQl9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChGYWN0b3JfQl9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoRmFjdG9yX0JfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEZhY3Rvcl9CX05QWCwgbmEucm0gPSBUUlVFKSkKCmBgYAoKIyMgNC44LiBGSF9EaWFnCmBgYHtyfQooRkhfRGlhZ19wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gRmFjdG9yX0hfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiRmFjdG9yIEggKE5QWCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDUsIGJ5ID0gMSksIGxpbWl0cyA9IGMoMCw1KSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKCmFuY292YShmb3JtdWxhID0gRmFjdG9yX0hfTlBYIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gRmFjdG9yX0hfTlBYIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihGYWN0b3JfSF9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChGYWN0b3JfSF9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoRmFjdG9yX0hfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEZhY3Rvcl9IX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA0LjkuIE1JRl9EaWFnCmBgYHtyfQooTUlGX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IERpYWcsIHkgPSBNSUZfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIk1JRiAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMiwgOCwgYnkgPSAyKSwgbGltaXRzID0gYygyLDgpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwiaW5kaWFucmVkMSIsICIjMWNhOWM5IiwgInNwcmluZ2dyZWVuNCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IE1JRl9OUFggfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBNSUZfTlBYIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihNSUZfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoTUlGX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChNSUZfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKE1JRl9OUFgsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNC4xMC4gVE5GUjFfRGlhZwpgYGB7cn0KKFRORlIxX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IFRORlIxX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRORlIxIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgxLCA2LCBieSA9IDEpLCBsaW1pdHMgPSBjKDEsNikpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiLCAic3ByaW5nZ3JlZW40IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVE5GUjFfTlBYIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gVE5GUjFfTlBYIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUTkZSMV9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChUTkZSMV9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVE5GUjFfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRORlIxX05QWCwgbmEucm0gPSBUUlVFKSkKCmBgYAoKIyMgNC4xMS4gVE5GUjJfRGlhZwpgYGB7cn0KKFRORlIyX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IFRORlIyX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRORlIyIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMSwgNCwgYnkgPSAxKSwgbGltaXRzID0gYygtMSw0KSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsImluZGlhbnJlZDEiLCAiIzFjYTljOSIsICJzcHJpbmdncmVlbjQiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUTkZSMl9OUFggfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBUTkZSMl9OUFggfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFRORlIyX05QWCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRORlIyX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChUTkZSMl9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVE5GUjJfTlBYLCBuYS5ybSA9IFRSVUUpKQoKYGBgCgojIyA0LjEyLiBJQ0FNMV9EaWFnCmBgYHtyfQooSUNBTTFfRGlhZ19wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gSUNBTTFfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiSUNBTTEgKE5QWCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC02LDAsIGJ5ID0gMSksIGxpbWl0cyA9IGMoLTYsIDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwiaW5kaWFucmVkMSIsICIjMWNhOWM5IiwgInNwcmluZ2dyZWVuNCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCmFuY292YShmb3JtdWxhID0gSUNBTTFfTlBYIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gSUNBTTFfTlBYIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihJQ0FNMV9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChJQ0FNMV9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoSUNBTTFfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKElDQU0xX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA0LjEzLiBWQ0FNMV9EaWFnCmBgYHtyfQooVkNBTTFfRGlhZ19wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gVkNBTTFfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiVkNBTTEgKE5QWCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC00LDEsIGJ5ID0gMSksIGxpbWl0cyA9IGMoLTQsIDEpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwiaW5kaWFucmVkMSIsICIjMWNhOWM5IiwgInNwcmluZ2dyZWVuNCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCmFuY292YShmb3JtdWxhID0gVkNBTTFfTlBYIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gVkNBTTFfTlBYIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihWQ0FNMV9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChWQ0FNMV9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVkNBTTFfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFZDQU0xX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIDUuIERpYWdub3NpcyArIFRhdSBzY2hlbWUKIyMgNS4xLiBZS0w0MF9EaWFnK1QKCmBgYHtyfQooWUtMNDBfZGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBZS0w0MF9OUFgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICBnZW9tX2JveHBsb3QoKSArCiAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiWUtMNDAgKE5QWCkiKSArCiAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMyw5LCBieSA9IDEpLCBsaW1pdHMgPSBjKDMsOSkpICsKICAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSBjKCdDTiBULScsICdDTiBUKycsICJTQ0QgVC0iLCAiU0NEIFQrIiwgIk1DSSBULSIsICJNQ0kgVCsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RBVCBULScsJ0RBVCBUKycpKSArCiAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsYWNrIiwgImJsYWNrIiwiYmxhY2siLCAnYmxhY2snKSkgKwogICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIiwiYXF1YW1hcmluZTIiLCAnZGVlcHBpbmsnKSkgKwogICB0aGVtZV9idygpICsKICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IFlLTDQwX05QWCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBZS0w0MF9OUFggfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oWUtMNDBfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoWUtMNDBfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFlLTDQwX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihZS0w0MF9OUFgsIG5hLnJtID0gVFJVRSkpCgpgYGAKCgoKIyMgNS4yLiBBeGxfRGlhZytUCmBgYHtyfQooQVhMX2RpYWdfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IEFYTF9OUFgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkFYTCAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgNSwgYnkgPSAxKSwgbGltaXRzID0gYygwLDUpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQVhMX05QWCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBBWExfTlBYIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEFYTF9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChBWExfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEFYTF9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQVhMX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgoKIyMgNS4zLiBUeXJvM19EaWFnK1QKYGBge3J9CihUeXJvM19EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IFRZUk8zX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUeXJvMyAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMiwgNiwgYnkgPSAxKSwgbGltaXRzID0gYygyLDYpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVFlSTzNfTlBYIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IFRZUk8zX05QWCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUWVJPM19OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChUWVJPM19OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVFlSTzNfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRZUk8zX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjQuIFRSRU0yX0RpYWcrVApgYGB7cn0KKFRSRU0yX0RpYWdfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gVFJFTTJfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRSRU0yIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA3LCBieSA9IDEpLCBsaW1pdHMgPSBjKDAsNykpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibGFjayIsICJibGFjayIsImJsYWNrIiwgJ2JsYWNrJykpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsJ2Jpc3F1ZTInLCAibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIiwiYXF1YW1hcmluZTIiLCAnZGVlcHBpbmsnKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUUkVNMl9OUFggfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gVFJFTTJfTlBYIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFRSRU0yX05QWCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRSRU0yX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChUUkVNMl9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVFJFTTJfTlBYLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDUuNS4gQzFxX0RpYWcrVApgYGB7cn0KKEMxcV9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBDMXFfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJDMXEgKE5QWCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC00LCAxLCBieSA9IDEpLCBsaW1pdHMgPSBjKC00LDEpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQzFxX05QWCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBDMXFfTlBYIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEMxcV9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChDMXFfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEMxcV9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQzFxX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjYuIEMzX0RpYWcrVApgYGB7cn0KKEMzX0RpYWdfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gQzNfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkMzIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMi41LCA1LCBieSA9IDIuNSksIGxpbWl0cyA9IGMoLTIuNSw1KSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsYWNrIiwgImJsYWNrIiwiYmxhY2siLCAnYmxhY2snKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwnYmlzcXVlMicsICJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiLCJhcXVhbWFyaW5lMiIsICdkZWVwcGluaycpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEMzX05QWCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBDM19OUFggfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQzNfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzNfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEMzX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDM19OUFgsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNS43LiBGQl9EaWFnK1QKYGBge3J9CihGQl9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IEZhY3Rvcl9CX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJGYWN0b3IgQiAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgNSwgYnkgPSAxKSwgbGltaXRzID0gYygwLDUpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gRmFjdG9yX0JfTlBYIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IEZhY3Rvcl9CX05QWCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihGYWN0b3JfQl9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChGYWN0b3JfQl9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoRmFjdG9yX0JfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEZhY3Rvcl9CX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjguIEZIX0RpYWcrVApgYGB7cn0KKEZIX0RpYWdfVF9wbG90IDwtIGdncGxvdChEQ190aGVzaXNfbywKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gRmFjdG9yX0hfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkZhY3RvciBIIChOUFgpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA1LCBieSA9IDEpLCBsaW1pdHMgPSBjKDAsNSkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibGFjayIsICJibGFjayIsImJsYWNrIiwgJ2JsYWNrJykpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsJ2Jpc3F1ZTInLCAibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIiwiYXF1YW1hcmluZTIiLCAnZGVlcHBpbmsnKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKCmFuY292YShmb3JtdWxhID0gRmFjdG9yX0hfTlBYIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IEZhY3Rvcl9IX25nX21sIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkRDX3RoZXNpc19vJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEZhY3Rvcl9IX05QWCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEZhY3Rvcl9IX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChGYWN0b3JfSF9OUFgsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oRmFjdG9yX0hfTlBYLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDUuOS4gTUlGX0RpYWcrVApgYGB7cn0KKE1JRl9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBNSUZfTlBYLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJNSUYgKE5QWCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDIsIDgsIGJ5ID0gMiksIGxpbWl0cyA9IGMoMiw4KSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsYWNrIiwgImJsYWNrIiwiYmxhY2siLCAnYmxhY2snKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwnYmlzcXVlMicsICJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiLCJhcXVhbWFyaW5lMiIsICdkZWVwcGluaycpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IE1JRl9OUFggfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRENfdGhlc2lzX28sCiAgICAgICBwb3N0SG9jID0gTUlGX05QWCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihNSUZfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoTUlGX05QWCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChNSUZfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKE1JRl9OUFgsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNS4xMC4gVE5GUjFfRGlhZytUCmBgYHtyfQooVE5GUjFfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBUTkZSMV9OUFgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiVE5GUjEgKE5QWCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDEsIDYsIGJ5ID0gMSksIGxpbWl0cyA9IGMoMSw2KSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsYWNrIiwgImJsYWNrIiwiYmxhY2siLCAnYmxhY2snKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwnYmlzcXVlMicsICJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiLCJhcXVhbWFyaW5lMiIsICdkZWVwcGluaycpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IFRORlIxX05QWCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBUTkZSMV9OUFggfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVE5GUjFfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVE5GUjFfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRORlIxX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihUTkZSMV9OUFgsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNS4xMS4gVE5GUjJfRGlhZytUCmBgYHtyfQooVE5GUjJfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KERDX3RoZXNpc19vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBUTkZSMl9OUFgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiVE5GUjIgKE5QWCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xLCA0LCBieSA9IDEpLCBsaW1pdHMgPSBjKC0xLDQpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxhY2siLCAiYmxhY2siLCJibGFjayIsICdibGFjaycpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJob25leWRldzMiLCdiaXNxdWUyJywgImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIsImFxdWFtYXJpbmUyIiwgJ2RlZXBwaW5rJykpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVE5GUjJfTlBYIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IFRORlIyX05QWCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUTkZSMl9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChUTkZSMl9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVE5GUjJfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRORlIyX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjEyLiBJQ0FNMV9EaWFnK1QKYGBge3J9CihJQ0FNMV9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IElDQU0xX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJJQ0FNMSAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoLTYsLTEsIGJ5ID0gMSksIGxpbWl0cyA9IGMoLTYsIC0xKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsYWNrIiwgImJsYWNrIiwiYmxhY2siLCAnYmxhY2snKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaG9uZXlkZXczIiwnYmlzcXVlMicsICJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiLCJhcXVhbWFyaW5lMiIsICdkZWVwcGluaycpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCmFuY292YShmb3JtdWxhID0gSUNBTTFfTlBYIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IERDX3RoZXNpc19vLAogICAgICAgcG9zdEhvYyA9IElDQU0xX05QWCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpEQ190aGVzaXNfbyU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihJQ0FNMV9OUFgsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChJQ0FNMV9OUFgsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoSUNBTTFfTlBYLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKElDQU0xX05QWCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjEzLiBWQ0FNMV9EaWFnK1QKYGBge3J9CihWQ0FNMV9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRENfdGhlc2lzX28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IFZDQU0xX05QWCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJWQ0FNMSAoTlBYKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoLTMsMSwgYnkgPSAxKSwgbGltaXRzID0gYygtMywgMSkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibGFjayIsICJibGFjayIsImJsYWNrIiwgJ2JsYWNrJykpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImhvbmV5ZGV3MyIsJ2Jpc3F1ZTInLCAibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIiwiYXF1YW1hcmluZTIiLCAnZGVlcHBpbmsnKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IFZDQU0xX05QWCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBEQ190aGVzaXNfbywKICAgICAgIHBvc3RIb2MgPSBWQ0FNMV9OUFggfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRENfdGhlc2lzX28lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVkNBTTFfTlBYLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVkNBTTFfTlBYLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFZDQU0xX05QWCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihWQ0FNMV9OUFgsIG5hLnJtID0gVFJVRSkpCgpgYGAKCgoKCgoKCgoKCgoKCgoKCgoK